freemarker实现动态生成内容
来源:互联网 发布:数控车床仿真软件下载 编辑:程序博客网 时间:2024/06/01 07:41
Freemarker作为一款非常优秀的模版框架,被struts2默认集成,配置返回result的type属性为freemarker,即将该返回的表现层指定为freemarker模版文件后缀为.ftl
当然,freemarker的魅力远远不止表现在这。
比如在实际开发中,会有各种各样的报文,假如报文的格式如下:
<?xml version="1.0" encoding="utf-8"?>
<commands>
<command>Im index on 0</command>
<command>Im index on 1</command>
<command>Im index on 2</command>
<command>Im index on 3</command>
<command>Im index on 4</command>
<command>Im index on 5</command>
<command>Im index on 6</command>
<command>Im index on 7</command>
<command>Im index on 8</command>
<command>Im index on 9</command>
</commands>
我们可以通过freemaker的api动态的生成我们想要的报文,只需要把原料给它,它就能给我们想要的东西,当然这也是模版框架意义.
下面给出代码:
package com.zhl.modules.fk.utils;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.io.OutputStreamWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;public class TemplateUtils {public static String mergeTemplateContent(Map<String, List<String>> values,String ftl){//定义字节数组输出流ByteArrayOutputStream output = new ByteArrayOutputStream();//这是配置的核心类Configuration config = new Configuration();try {//设置模版存放目录config.setDirectoryForTemplateLoading(new File("WebContent/ftls"));//模版类Template tp = config.getTemplate(ftl+".ftl");//将变量与模版合并,并将合并后的内容给输出流tp.process(values, new OutputStreamWriter(output));} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();}//返回输出流的字符串形式return output.toString();}public static void main(String[] args) {Map<String, List<String>> values = new HashMap<String, List<String>>();List<String> vals = new ArrayList<String>();for(int i = 0;i<10;i++){vals.add("Im index on "+i);}values.put("aValue", vals);//将最终结果打印出来System.out.println(mergeTemplateContent(values, "form"));}}
模版文件form.ftl内容:
<?xml version="1.0" encoding="utf-8"?>
<commands>
<#list aValue as cm>
<command>${cm}</command>
</#list>
</commands>
执行我们的程序:
工程目录:
关于struts2部分,自行忽略
- freemarker实现动态生成内容
- freemarker生成邮件内容
- 实现Freemarker生成word文档,内容可二次写入
- 使用freemarker实现静态模板维护及动态内容展示案例
- chap5 生成动态内容
- 动态生成WORD内容
- 利用javascript中innerhtml实现当页动态生成内容
- jsp实现java程序片段动态生成表格内容
- jsp中实现java程序片段动态生成表格内容
- freemarker 内容
- 动态生成Html页面内容
- Freemarker+XML+Servlet 实现生成word
- 【java】模板freemarker实现word生成导出
- Java实现freemarker生成word模板
- freemarker 生成word 循环输出list内容,并且排序
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- 通过freemarker生成一个超简单的动态表单例子
- 【玩转Android-01】AndroidXML文件解析之Pull解析
- 生产环境参数实例及分析【生产环境实例增加中】
- Android 中解析xml的类、它们 的原理和区别?
- rpm与dpkg yum与apt-get详解,一看这个就知道这些个关系了
- Fragment中包含surfaceView出现闪屏问题解决方法
- freemarker实现动态生成内容
- mssqlserver 复制拷贝附件sql脚本(一)
- CSRF攻击
- 紧急求助 官方android的SDK无法连接下载了,eclipse里面的ADT用官方的地址也不能下载了
- 使用springMVC的详细步骤
- jQuery插件之Cookie
- 2015弱校连萌寒假专题一(热身) 题解(K-T)
- JVM系列五:JVM监测&工具[整理中]
- java开发环境的配置