freemarker 模版生成文件
来源:互联网 发布:mysql 字符长度函数 编辑:程序博客网 时间:2024/05/21 15:50
网上找了点资料,自动生成html文件,下载jar包,创建共通方法,分装数据。调用生成。
import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.Locale;import java.util.Map;import org.apache.struts2.ServletActionContext;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;import freemarker.template.TemplateExceptionHandler;public class FreemarkerUtils { private static Configuration cfg = null; /** * 获取freemarker的配置 freemarker本身支持classpath,目录和从ServletContext获取. * @return 返回Configuration对象 */ private static Configuration getConfiguration() { if (null == cfg) { cfg = new Configuration(); // 这里有三种方式读取 // (一个文件目录) // cfg.setDirectoryForTemplateLoading(new File("templates")); // classpath下的一个目录(读取jar文件) // cfg.setClassForTemplateLoading(this.getClass(),"/templates"); // 相对web的根路径来说 根目录 cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "templates"); // setEncoding这个方法一定要设置国家及其编码,不然在flt中的中文在生成html后会变成乱码 cfg.setEncoding(Locale.getDefault(), "UTF-8"); // 设置对象的包装器 cfg.setObjectWrapper(new DefaultObjectWrapper()); // 设置异常处理器//这样的话就可以${a.b.c.d}即使没有属性也不会出错 cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); } return cfg; } /** * * @param ftl 模板文件名,相对上面的模版根目录templates路径,例如/module/view.ftl templates/module/view.ftl * @param data 填充数据 * @param targetFile 要生成的静态文件的路径,相对设置中的根路径,例如 "jsp/user/1.html" * @return */ public static boolean createFile(String ftl, Map<String,Object> data, String targetFile) { try { // 创建Template对象 Configuration cfg = FreemarkerUtils.getConfiguration(); Template template = cfg.getTemplate(ftl); template.setEncoding("UTF-8"); // 生成静态页面 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8")); template.process(data, out); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); return false; } catch (TemplateException e) { e.printStackTrace(); return false; } return true; }}
数据封装调用
HashMap map = new HashMap(); map.put("image", re == null ? "" : FileHelper.addTimestamp(re.getUrl()));// 背景图片 map.put("categorylist", list); // 子项目list map.put("size", list.size()); // 子项目size map.put("url", "phone!categorySearch?id="); // 子项目url链接 map.put("basePath",FileHelper.combineBasePath()); // 网页base url // 生成HTML的完整路径 String htmlFullPath = FileHelper.getHtmlAbsolutePath(template.getOutputPath(), category.getId()); FreemarkerUtils.createFile("view.ftl", map, htmlFullPath);
页面展示
<#list categorylist as category> <div class="ui-block-a"><a class="a1" href="${url}${category.id}" data-ajax = "false">${category.name}</a></div> </#list>
- freemarker 模版生成文件
- Freemarker生成HTML模版页面
- 利用Freemarker生成html静态页面,也可利用模版功能生成不同格式的文件
- 使用freemarker生成文件
- freemarker 生成静态文件
- freemarker 模板生成 文件
- Java Web项目中使用Freemarker模版生成Word文档
- FreeMarker生成word文件入门
- freemarker生成静态html文件
- 利用freemarker生成静态文件
- Freemarker+IText生成pdf文件
- freemarker模板生成word文件
- xls后台模版生成文件
- java使用freemarker模版下载成Excel文件
- 模版引擎FreeMarker
- freemarker 模版引擎
- freemarker 模版静态化
- FreeMarker 模版框架学习
- C++获取mac地址
- zipalign方法
- [深入浅出Cocoa]iOS网络编程之Socket
- 搭建简单的Oracle/SQL练习环境
- [Java] 找错误系列-------任务不停问题
- freemarker 模版生成文件
- ubuntu下打开txt文件乱码的解决方法
- Linux Bash Shell入门教程
- 今天我辞职
- Bigcommerce: 给已完成购买的客户发送一封产品评论邮件,让客户直接进行产品评论
- 编程珠玑---读书笔记---使用后缀数组查找最长重复子串
- 动态生成表格
- Codeforces Round #178 (Div. 2) A and B
- C++的显式转换