假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html


1 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
2             Template template = getTemplate(ftlName, ftlPath);
3             template.process(root, out);

 1     public static Template getTemplate(String ftlName, String ftlPath) throws Exception{
 2         try {
 3             Configuration cfg = new Configuration();                                                  //通过Freemaker的Configuration读取相应的ftl
 4             cfg.setEncoding(Locale.CHINA, "utf-8");
 5             cfg.setDirectoryForTemplateLoading(new File(PathUtil.getClassResources()+"/ftl/"+ftlPath));        //设定去哪里读取相应的ftl模板文件
 6             Template temp = cfg.getTemplate(ftlName);                                                //在模板文件目录中找到名称为name的文件
 7             return temp;
 8         } catch (IOException e) {
 9             e.printStackTrace();
10         }
11         return null;
12     }

template 就是获取的模板
  1 package com.fh.controller.${packageName}.${objectNameLower};
  2
  3 import java.io.PrintWriter;
  4 import java.text.DateFormat;
  5 import java.text.SimpleDateFormat;
  6 import java.util.ArrayList;
  7 import java.util.Date;
  8 import java.util.HashMap;
  9 import java.util.List;
 10 import java.util.Map;
 11 import javax.annotation.Resource;
 12 import org.springframework.beans.propertyeditors.CustomDateEditor;
 13 import org.springframework.stereotype.Controller;
 14 import org.springframework.web.bind.WebDataBinder;
 15 import org.springframework.web.bind.annotation.InitBinder;
 16 import org.springframework.web.bind.annotation.RequestMapping;
 17 import org.springframework.web.bind.annotation.ResponseBody;
 18 import org.springframework.web.servlet.ModelAndView;
 19 import com.fh.controller.base.BaseController;
 20 import com.fh.entity.Page;
 21 import com.fh.util.AppUtil;
 22 import com.fh.util.ObjectExcelView;
 23 import com.fh.util.PageData;
 24 import com.fh.util.Jurisdiction;
 25 import com.fh.util.Tools;
 26 import com.fh.service.${packageName}.${objectNameLower}.${objectName}Manager;
 27
 28 /**
 29  * 说明:${TITLE}
 30  * 创建人:FH Q313596790
 31  * 创建时间:${nowDate?string("yyyy-MM-dd")}
 32  */
 33 @Controller
 34 @RequestMapping(value="/${objectNameLower}")
 35 public class ${objectName}Controller extends BaseController {
 36
 37     String menuUrl = "${objectNameLower}/list.do"; //菜单地址(权限用)
 38     @Resource(name="${objectNameLower}Service")
 39     private ${objectName}Manager ${objectNameLower}Service;
 40
 41     /**保存
 42      * @param
 43      * @throws Exception
 44      */
 45     @RequestMapping(value="/save")
 46     public ModelAndView save() throws Exception{
 47         logBefore(logger, Jurisdiction.getUsername()+"新增${objectName}");
 48         if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
 49         ModelAndView mv = this.getModelAndView();
 50         PageData pd = new PageData();
 51         pd = this.getPageData();
 52         pd.put("${objectNameUpper}_ID", this.get32UUID());    //主键
 53 <#list fieldList as var><#if var[3] == "否"><#if var[1] == "Date">        pd.put("${var[0]}", Tools.date2Str(new Date()));    //${var[2]}
 54 <#elseif var[1] == "Integer">        pd.put("${var[0]}", "${var[4]?replace("无",0)}");    //${var[2]}
 55 <#elseif var[1] == "Double">        pd.put("${var[0]}", "${var[4]?replace("无",0)}");    //${var[2]}
 56 <#else>        pd.put("${var[0]}", "${var[4]?replace("无","")}");    //${var[2]}
 57 </#if></#if></#list>        ${objectNameLower}Service.save(pd);
 58         mv.addObject("msg","success");
 59         mv.setViewName("save_result");
 60         return mv;
 61     }
 62
 63     /**删除
 64      * @param out
 65      * @throws Exception
 66      */
 67     @RequestMapping(value="/delete")
 68     public void delete(PrintWriter out) throws Exception{
 69         logBefore(logger, Jurisdiction.getUsername()+"删除${objectName}");
 70         if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
 71         PageData pd = new PageData();
 72         pd = this.getPageData();
 73         ${objectNameLower}Service.delete(pd);
 74         out.write("success");
 75         out.close();
 76     }
 77
 78     /**修改
 79      * @param
 80      * @throws Exception
 81      */
 82     @RequestMapping(value="/edit")
 83     public ModelAndView edit() throws Exception{
 84         logBefore(logger, Jurisdiction.getUsername()+"修改${objectName}");
 85         if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
 86         ModelAndView mv = this.getModelAndView();
 87         PageData pd = new PageData();
 88         pd = this.getPageData();
 89         ${objectNameLower}Service.edit(pd);
 90         mv.addObject("msg","success");
 91         mv.setViewName("save_result");
 92         return mv;
 93     }
 94
 95     /**列表
 96      * @param page
 97      * @throws Exception
 98      */
 99     @RequestMapping(value="/list")
100     public ModelAndView list(Page page) throws Exception{
101         logBefore(logger, Jurisdiction.getUsername()+"列表${objectName}");
102         //if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
103         ModelAndView mv = this.getModelAndView();
104         PageData pd = new PageData();
105         pd = this.getPageData();
106         String keywords = pd.getString("keywords");                //关键词检索条件
107         if(null != keywords && !"".equals(keywords)){
108             pd.put("keywords", keywords.trim());
109         }
110         page.setPd(pd);
111         List<PageData>    varList = ${objectNameLower}Service.list(page);    //列出${objectName}列表
112         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_list");
113         mv.addObject("varList", varList);
114         mv.addObject("pd", pd);
115         mv.addObject("QX",Jurisdiction.getHC());    //按钮权限
116         return mv;
117     }
118
119     /**去新增页面
120      * @param
121      * @throws Exception
122      */
123     @RequestMapping(value="/goAdd")
124     public ModelAndView goAdd()throws Exception{
125         ModelAndView mv = this.getModelAndView();
126         PageData pd = new PageData();
127         pd = this.getPageData();
128         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_edit");
129         mv.addObject("msg", "save");
130         mv.addObject("pd", pd);
131         return mv;
132     }
133
134      /**去修改页面
135      * @param
136      * @throws Exception
137      */
138     @RequestMapping(value="/goEdit")
139     public ModelAndView goEdit()throws Exception{
140         ModelAndView mv = this.getModelAndView();
141         PageData pd = new PageData();
142         pd = this.getPageData();
143         pd = ${objectNameLower}Service.findById(pd);    //根据ID读取
144         mv.setViewName("${packageName}/${objectNameLower}/${objectNameLower}_edit");
145         mv.addObject("msg", "edit");
146         mv.addObject("pd", pd);
147         return mv;
148     }
149
150      /**批量删除
151      * @param
152      * @throws Exception
153      */
154     @RequestMapping(value="/deleteAll")
155     @ResponseBody
156     public Object deleteAll() throws Exception{
157         logBefore(logger, Jurisdiction.getUsername()+"批量删除${objectName}");
158         if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
159         PageData pd = new PageData();
160         Map<String,Object> map = new HashMap<String,Object>();
161         pd = this.getPageData();
162         List<PageData> pdList = new ArrayList<PageData>();
163         String DATA_IDS = pd.getString("DATA_IDS");
164         if(null != DATA_IDS && !"".equals(DATA_IDS)){
165             String ArrayDATA_IDS[] = DATA_IDS.split(",");
166             ${objectNameLower}Service.deleteAll(ArrayDATA_IDS);
167             pd.put("msg", "ok");
168         }else{
169             pd.put("msg", "no");
170         }
171         pdList.add(pd);
172         map.put("list", pdList);
173         return AppUtil.returnObject(pd, map);
174     }
175
176      /**导出到excel
177      * @param
178      * @throws Exception
179      */
180     @RequestMapping(value="/excel")
181     public ModelAndView exportExcel() throws Exception{
182         logBefore(logger, Jurisdiction.getUsername()+"导出${objectName}到excel");
183         if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
184         ModelAndView mv = new ModelAndView();
185         PageData pd = new PageData();
186         pd = this.getPageData();
187         Map<String,Object> dataMap = new HashMap<String,Object>();
188         List<String> titles = new ArrayList<String>();
189 <#list fieldList as var>        titles.add("${var[2]}");    //${var_index + 1}
190 </#list>        dataMap.put("titles", titles);
191         List<PageData> varOList = ${objectNameLower}Service.listAll(pd);
192         List<PageData> varList = new ArrayList<PageData>();
193         for(int i=0;i<varOList.size();i++){
194             PageData vpd = new PageData();
195 <#list fieldList as var><#if var[1] == "Integer">            vpd.put("var${var_index + 1}", varOList.get(i).get("${var[0]}").toString());    //${var_index + 1}
196 <#elseif var[1] == "Double">            vpd.put("var${var_index + 1}", varOList.get(i).get("${var[0]}").toString());    //${var_index + 1}
197 <#else>            vpd.put("var${var_index + 1}", varOList.get(i).getString("${var[0]}"));        //${var_index + 1}
198 </#if></#list>            varList.add(vpd);
199         }
200         dataMap.put("varList", varList);
201         ObjectExcelView erv = new ObjectExcelView();
202         mv = new ModelAndView(erv,dataMap);
203         return mv;
204     }
205
206     @InitBinder
207     public void initBinder(WebDataBinder binder){
208         DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
209         binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
210     }
211 }
212
213 null
214 null
215 {}
216 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获取的动态数据给替换掉

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

template.process(root, out)的用法(shiro项目中来的九)相关推荐

  1. java的相对路径用法_java项目中的绝对路径和相对路径用法说明

    java项目中的绝对路径和相对路径用法说明 绝对路径:不可改变的路径 本地绝对路径:增加盘符的路径(e:/test/test.html) 网络绝对路径:增加协议,IP地址,端口号的路径(http:// ...

  2. PMD 的介绍,用法,在项目中的应用

    PMD介绍 PMD是扫描 Java 源码并查找以下潜在问题: 从未用过的局部变量 空捕捉块(catch block) 从未用过的参数 空if声明 重复的导入声明 从未用过的私有方法 孤立的类 短型或长 ...

  3. python大型项目中的日志模块_Python中日志模块的使用

    前言 程序和脚本往往是无人值守运行的,一旦发生问题,就需要我们去追溯当时的情况来定位问题的原因. 这便需要我们在程序和脚本中引入日志的功能. 相比于print信息,使用logging日志有以下优点 可 ...

  4. vue+elementUI项目中使用NavMenu导航菜单

    vue+elementUI项目中使用NavMenu 导航菜单 在elementUI官网组件中NavMenu 导航菜单的使用只是简单地运用,在实践项目中还需要配合路由配置.一般后台管理系统不只是导航菜单 ...

  5. vue项目中的 env文件从何而来?什么是 process.env

    start 在 vue 项目中,时常会遇到到这么一行代码 process.env 这东西是什么,怎么用? 今天一篇文章带你了解 process.env 1.使用场景 先别急,先看 vue 项目中的用法 ...

  6. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  7. 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法

    前端框架Vue--vue-i18n ,vue项目中如何实现国际化,$t的用法 vue中html页面写入$t('')怎么显示

  8. springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程

    springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步: 1. 在项目中导入maven依赖 <dependency><groupId> ...

  9. sprintf函数的用法_我在C++项目中对于宏的一些用法

    从上一次写文章到现在已经快2个月了,为啥没更新,因为太忙了! 每天都在为了实现一些麻烦的功能而心急火燎,总是没办法静下心来写文章.所以一直拖延. 对于宏的一些个人用法其实早就想写出来了,碍于时间关系一 ...

最新文章

  1. SpringBoot-400-Bad-Request(Request-header-is-too-large)
  2. Java面向对象 第3节 类的封装和继承
  3. 无线传感器网络--分簇或者不分簇
  4. 【职场】面试中最难回答频率最高的70个问题
  5. 我的世界java版袭击图片_我的世界:你mc“中毒”有多深?这8张图都能看懂,绝对是真爱粉...
  6. 并查集 Python实现
  7. oracle查看创建索引语句,ORACLE下如何获得全部的索引创建语句
  8. apt 根据注解,编译时生成代码
  9. 创建和应用Java包文件的两种方式(转)
  10. html 语义化标签拾遗
  11. 作为函数的mixin
  12. 在LaTex中插入代码块
  13. vue点击改变data_vue 中自定义指令改变data中的值
  14. AlphaGo 原理讲解(附代码)
  15. ROS突然所有的工作空间都无法启动launch,但roscore可以用
  16. php 手机号码所属城市,基于PHP的手机号码归属地查询
  17. Windows 命令行基础
  18. [教程]教你如何制作彩色的3D打印Groot
  19. layui后台添加数据给php,layui怎么实现数据绑定
  20. 八大排序 - (详解)

热门文章

  1. TCP/IP 协议理解
  2. 13个JavaScript图表图形绘制插件
  3. Web用户控件的一个毛病
  4. php 的webservice类库NuSoap介绍
  5. Linux环境ddd安装与使用
  6. C++中关键字volatile和mutable用法
  7. 循环神经网络(RNN)简介
  8. Ubuntu14.04 64位机上配置OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.4.3操作步骤
  9. Linux下的内存对齐函数
  10. 亲君圆梦,创业一起来