Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
             Template template = getTemplate(ftlName, ftlPath);
             template.process(root, out);
     public static Template getTemplate(String ftlName, String ftlPath) throws Exception{
         try {
             Configuration cfg = new Configuration();                                                  //通过Freemaker的Configuration读取相应的ftl
             cfg.setEncoding(Locale.CHINA, "utf-8");
             cfg.setDirectoryForTemplateLoading(new File(PathUtil.getClassResources()+"/ftl/"+ftlPath));        //设定去哪里读取相应的ftl模板文件
             Template temp = cfg.getTemplate(ftlName);                                                //在模板文件目录中找到名称为name的文件
             return temp;
         } catch (IOException e) {
             e.printStackTrace();
         }
         return null;
     }
template 就是获取的模板
 package com.fh.controller.${packageName}.${objectNameLower};

 import java.io.PrintWriter;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Resource;
 import org.springframework.beans.propertyeditors.CustomDateEditor;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.InitBinder;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import com.fh.controller.base.BaseController;
 import com.fh.entity.Page;
 import com.fh.util.AppUtil;
 import com.fh.util.ObjectExcelView;
 import com.fh.util.PageData;
 import com.fh.util.Jurisdiction;
 import com.fh.util.Tools;
 import com.fh.service.${packageName}.${objectNameLower}.${objectName}Manager;

 /**
  * 说明:${TITLE}
  * 创建人:FH Q313596790
  * 创建时间:${nowDate?string("yyyy-MM-dd")}
  */
 @Controller
 @RequestMapping(value="/${objectNameLower}")
 public class ${objectName}Controller extends BaseController {

     String menuUrl = "${objectNameLower}/list.do"; //菜单地址(权限用)
     @Resource(name="${objectNameLower}Service")
     private ${objectName}Manager ${objectNameLower}Service;

     /**保存
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/save")
     public ModelAndView save() throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"新增${objectName}");
         if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
         ModelAndView mv = this.getModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         pd.put("${objectNameUpper}_ID", this.get32UUID());    //主键
 <#list fieldList as var><#if var[3] == "否"><#if var[1] == "Date">        pd.put("${var[0]}", Tools.date2Str(new Date()));    //${var[2]}
 <#elseif var[1] == "Integer">        pd.put("${var[0]}", "${var[4]?replace("无",0)}");    //${var[2]}
 <#elseif var[1] == "Double">        pd.put("${var[0]}", "${var[4]?replace("无",0)}");    //${var[2]}
 <#else>        pd.put("${var[0]}", "${var[4]?replace("无","")}");    //${var[2]}
 </#if></#if></#list>        ${objectNameLower}Service.save(pd);
         mv.addObject("msg","success");
         mv.setViewName("save_result");
         return mv;
     }

     /**删除
      * @param out
      * @throws Exception
      */
     @RequestMapping(value="/delete")
     public void delete(PrintWriter out) throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"删除${objectName}");
         if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
         PageData pd = new PageData();
         pd = this.getPageData();
         ${objectNameLower}Service.delete(pd);
         out.write("success");
         out.close();
     }

     /**修改
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/edit")
     public ModelAndView edit() throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"修改${objectName}");
         if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
         ModelAndView mv = this.getModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         ${objectNameLower}Service.edit(pd);
         mv.addObject("msg","success");
         mv.setViewName("save_result");
         return mv;
     }

     /**列表
      * @param page
      * @throws Exception
      */
     @RequestMapping(value="/list")
     public ModelAndView list(Page page) throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"列表${objectName}");
         //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
         ModelAndView mv = this.getModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         String keywords = pd.getString("keywords");                //关键词检索条件
         if(null != keywords && !"".equals(keywords)){
             pd.put("keywords", keywords.trim());
         }
         page.setPd(pd);
         List<PageData>    varList = ${objectNameLower}Service.list(page);    //列出${objectName}列表
         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_list");
         mv.addObject("varList", varList);
         mv.addObject("pd", pd);
         mv.addObject("QX",Jurisdiction.getHC());    //按钮权限
         return mv;
     }

     /**去新增页面
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/goAdd")
     public ModelAndView goAdd()throws Exception{
         ModelAndView mv = this.getModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_edit");
         mv.addObject("msg", "save");
         mv.addObject("pd", pd);
         return mv;
     }    

      /**去修改页面
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/goEdit")
     public ModelAndView goEdit()throws Exception{
         ModelAndView mv = this.getModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         pd = ${objectNameLower}Service.findById(pd);    //根据ID读取
         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_edit");
         mv.addObject("msg", "edit");
         mv.addObject("pd", pd);
         return mv;
     }    

      /**批量删除
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/deleteAll")
     @ResponseBody
     public Object deleteAll() throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"批量删除${objectName}");
         if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
         PageData pd = new PageData();
         Map<String,Object> map = new HashMap<String,Object>();
         pd = this.getPageData();
         List<PageData> pdList = new ArrayList<PageData>();
         String DATA_IDS = pd.getString("DATA_IDS");
         if(null != DATA_IDS && !"".equals(DATA_IDS)){
             String ArrayDATA_IDS[] = DATA_IDS.split(",");
             ${objectNameLower}Service.deleteAll(ArrayDATA_IDS);
             pd.put("msg", "ok");
         }else{
             pd.put("msg", "no");
         }
         pdList.add(pd);
         map.put("list", pdList);
         return AppUtil.returnObject(pd, map);
     }

      /**导出到excel
      * @param
      * @throws Exception
      */
     @RequestMapping(value="/excel")
     public ModelAndView exportExcel() throws Exception{
         logBefore(logger, Jurisdiction.getUsername()+"导出${objectName}到excel");
         if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
         ModelAndView mv = new ModelAndView();
         PageData pd = new PageData();
         pd = this.getPageData();
         Map<String,Object> dataMap = new HashMap<String,Object>();
         List<String> titles = new ArrayList<String>();
 <#list fieldList as var>        titles.add("${var[2]}");    //${var_index + 1}
 </#list>        dataMap.put("titles", titles);
         List<PageData> varOList = ${objectNameLower}Service.listAll(pd);
         List<PageData> varList = new ArrayList<PageData>();
         for(int i=0;i<varOList.size();i++){
             PageData vpd = new PageData();
 <#list fieldList as var><#if var[1] == "Integer">            vpd.put("var${var_index + 1}", varOList.get(i).get("${var[0]}").toString());    //${var_index + 1}
 <#elseif var[1] == "Double">            vpd.put("var${var_index + 1}", varOList.get(i).get("${var[0]}").toString());    //${var_index + 1}
 <#else>            vpd.put("var${var_index + 1}", varOList.get(i).getString("${var[0]}"));        //${var_index + 1}
 </#if></#list>            varList.add(vpd);
         }
         dataMap.put("varList", varList);
         ObjectExcelView erv = new ObjectExcelView();
         mv = new ModelAndView(erv,dataMap);
         return mv;
     }

     @InitBinder
     public void initBinder(WebDataBinder binder){
         DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
     }
 }

 null
 null
 {}
 null

root的值

{faobject=, packageName=system, fieldList=[[Ljava.lang.String;@55fbf1af, [Ljava.lang.String;@fb84443, [Ljava.lang.String;@a8992c5, [Ljava.lang.String;@4e02c8ea, [Ljava.lang.String;@18d4a2a9, [Ljava.lang.String;@300311fb], objectName=UserPhoto, nowDate=Fri Feb 09 21:25:26 CST 2018, tabletop=SYS_, objectNameUpper=USERPHOTO, objectNameLower=userphoto, TITLE=用户头像}

只不过这时候获取的模板是动态的,这时候通过

template.process(root, out);

这个方法中root 是动态的这时候root就会动态的把tempate获取的动态数据给替换掉

template.process(root, out)的用法(shiro项目中来的九)的更多相关文章

  1. 权限的分类(shiro项目中来的五)

    第一种权限:菜单栏展示还是不展示的权限(粗颗粒) 实现方法,在SYS_ROLE表中添加一个字段rights,通过 public static BigInteger sumRights(String[] ...

  2. setBit testBit权限管理(shiro项目中来的二)

    一,setBit testBit权限管理的理解 1.1.jdk7文档解释 public boolean testBit(int n)Returns true if and only if the de ...

  3. shiro的登陆认证(shiro项目中来的一)

    一,图解 二,流程 2.1,创建token令牌,token中有用户提交的认证信息即账号和密码 Subject subject = SecurityUtils.getSubject(); Usernam ...

  4. java自带的类压缩和下载,以及递归删除动态的文件(shiro项目中来的十)

    详见项目,不用借助于任何外在的jar包,通过jre自带的实现.

  5. 非空校验的提示按钮(shiro项目中来的六)

    一:图示 二,js脚本 /** * jquery tips 提示插件 jquery.tips.js v0.1beta * * 使用方法 * $(selector).tips({ //selector ...

  6. springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、

    要实现的目的:根据登录用户.查询出当前用户具有的所有权限.然后登录系统后.根据查询到的权限信息进行不同的操作. 以下的代码是在搭好的框架之下进行的编码. 文章目录 核心实现部分. 第一种是将用户表和角 ...

  7. String.valueOf(Thread.currentThread().getContextClassLoader().getResource("")) 获取项目的绝对路径(shiro项目中来的八)

    一,上代码 String.valueOf(Thread.currentThread().getContextClassLoader().getResource("")) file: ...

  8. 动态添加弹出页面(shiro项目中来的七)

    一,图解 二,代码 2.0,新增代码 //打开编辑属性(新增) function dialog_open(){ $("#dialog-add").css("display ...

  9. 页面某些特定图标的权限,比如导入导出表格,下载等等,这个权限必须在有某个页面查看的权利的基础上(细粒度)(shiro项目中来的四)

    一,查找按钮权限的设置 第一步:会根据用户的相关信息去查到它的角色表: SELECT * FROM SYS_USER WHERE user_id='eded77bdf35347249b2bacfa18 ...

随机推荐

  1. 洛谷 [P3398] 仓鼠找sugar

    树剖求LCA 我们可以发现,两条路径ab,cd相交,当且仅当 dep[lca(a,b)]>=dep[lca(c,d)]&(lca(lca(a,b),c)==lca(a,b)||lca(l ...

  2. IDEA如何创建及配置Web项目(多图)

    正文之前 在学习Java Web时,第一个遇到的问题就是如何创建或配置Web项目了,今天,就用IntelliJ IDEA 来进行Web项目配置: 创建Web项目 配置web项目 正文 创建Web项目 ...

  3. 《CSS核心技术详解》

    前言 看似简单的CSS,却暗藏玄机,那是我们摸爬滚打好长时间后悟出的真理. 在很长的一段时间里,我并没有重视CSS,觉得CSS很简单,无非就是一些属性:后来才发现自己小看了CSS,对CSS的了解实在是 ...

  4. MySQL数据类型概念

    关系型数据库的特点 1,数据以表格的形式出现 2,每行为各种记录的名称 3,每列为数据名称所对应的数据域 4许多的行和列组成一张table 5若干的表单组成databases 术语 数据库:关联表的集 ...

  5. I can do it

    If it doesn't challange you ,it won't change you.

  6. 音乐之声——midi制作原理

    实际发出声音需要4项必备的条件 1 发生的装置 Sequencer     把sequencer想成CD播放机 (plays) 2 要演奏的乐曲 Sequence     sequence就好像是单曲 ...

  7. 设置修改CentOS系统时区

    一.时区 1. 查看当前时区date -R 2. 修改设置时区方法(1)tzselect方法(2) 仅限于RedHat Linux 和 CentOS系统timeconfig方法(3) 适用于Debia ...

  8. 并行执行 Job - 每天5分钟玩转 Docker 容器技术(134)

    有时,我们希望能同时运行多个 Pod,提高 Job 的执行效率.这个可以通过 parallelism 设置. 这里我们将并行的 Pod 数量设置为 2,实践一下: Job 一共启动了两个 Pod,而且 ...

  9. hexo博客简易搭建教程

    什么是Hexo Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.官网 Hexo安装 安装 在安装Hex ...

  10. 基于MATLAB2016b图形化设计自动生成Verilog语言的积分模块及其应用

    在电力电子变流器设备中,常常需要计算发电量,由于电力电子变流器设备一般是高频变流设备,所以发电量的计算几乎时实时功率的积分,此时就会用到一个积分模块.发电量计算的公式如下:Q=∫P. FPGA由于其并 ...