template.process(root, out)的用法(shiro项目中来的九)
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过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项目中来的九)相关推荐
- java的相对路径用法_java项目中的绝对路径和相对路径用法说明
java项目中的绝对路径和相对路径用法说明 绝对路径:不可改变的路径 本地绝对路径:增加盘符的路径(e:/test/test.html) 网络绝对路径:增加协议,IP地址,端口号的路径(http:// ...
- PMD 的介绍,用法,在项目中的应用
PMD介绍 PMD是扫描 Java 源码并查找以下潜在问题: 从未用过的局部变量 空捕捉块(catch block) 从未用过的参数 空if声明 重复的导入声明 从未用过的私有方法 孤立的类 短型或长 ...
- python大型项目中的日志模块_Python中日志模块的使用
前言 程序和脚本往往是无人值守运行的,一旦发生问题,就需要我们去追溯当时的情况来定位问题的原因. 这便需要我们在程序和脚本中引入日志的功能. 相比于print信息,使用logging日志有以下优点 可 ...
- vue+elementUI项目中使用NavMenu导航菜单
vue+elementUI项目中使用NavMenu 导航菜单 在elementUI官网组件中NavMenu 导航菜单的使用只是简单地运用,在实践项目中还需要配合路由配置.一般后台管理系统不只是导航菜单 ...
- vue项目中的 env文件从何而来?什么是 process.env
start 在 vue 项目中,时常会遇到到这么一行代码 process.env 这东西是什么,怎么用? 今天一篇文章带你了解 process.env 1.使用场景 先别急,先看 vue 项目中的用法 ...
- Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue
Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...
- 前端框架Vue——vue-i18n ,vue项目中如何实现国际化,$t的用法
前端框架Vue--vue-i18n ,vue项目中如何实现国际化,$t的用法 vue中html页面写入$t('')怎么显示
- springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步: 1. 在项目中导入maven依赖 <dependency><groupId> ...
- sprintf函数的用法_我在C++项目中对于宏的一些用法
从上一次写文章到现在已经快2个月了,为啥没更新,因为太忙了! 每天都在为了实现一些麻烦的功能而心急火燎,总是没办法静下心来写文章.所以一直拖延. 对于宏的一些个人用法其实早就想写出来了,碍于时间关系一 ...
最新文章
- SpringBoot-400-Bad-Request(Request-header-is-too-large)
- Java面向对象 第3节 类的封装和继承
- 无线传感器网络--分簇或者不分簇
- 【职场】面试中最难回答频率最高的70个问题
- 我的世界java版袭击图片_我的世界:你mc“中毒”有多深?这8张图都能看懂,绝对是真爱粉...
- 并查集 Python实现
- oracle查看创建索引语句,ORACLE下如何获得全部的索引创建语句
- apt 根据注解,编译时生成代码
- 创建和应用Java包文件的两种方式(转)
- html 语义化标签拾遗
- 作为函数的mixin
- 在LaTex中插入代码块
- vue点击改变data_vue 中自定义指令改变data中的值
- AlphaGo 原理讲解(附代码)
- ROS突然所有的工作空间都无法启动launch,但roscore可以用
- php 手机号码所属城市,基于PHP的手机号码归属地查询
- Windows 命令行基础
- [教程]教你如何制作彩色的3D打印Groot
- layui后台添加数据给php,layui怎么实现数据绑定
- 八大排序 - (详解)
热门文章
- TCP/IP 协议理解
- 13个JavaScript图表图形绘制插件
- Web用户控件的一个毛病
- php 的webservice类库NuSoap介绍
- Linux环境ddd安装与使用
- C++中关键字volatile和mutable用法
- 循环神经网络(RNN)简介
- Ubuntu14.04 64位机上配置OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.4.3操作步骤
- Linux下的内存对齐函数
- 亲君圆梦,创业一起来