FreeMarker使用
程序员文章站
2022-07-14 09:52:30
...
使用FreeMarker实现向ftl模板中添加数据
Java代码中实现向list中添加数据
JSONObject map = new JSONObject();
map.put("username", username);//放入map中
map.put("maxputoutdays", maxputoutdays);//放入map中
JSONObject result = new JSONObject();
JSONArray retArray = new JSONArray();
retArray.add(map);
result.put("array", retArray);//array提供为页面使用
//greatTempFile方法是将result里面的数据填充到projectdesc.ftl模板
ProjectDescToStringUtil.greatTempFile(null, result,"projectdesc.ftl");
ProjectDescToStringUtil工具类实现数据填充到模板
- 需要jar包支持
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
- 代码实现
public static String greatTempFile(HttpServletRequest request, JSONObject object,String templateFileName) {
StringWriter writer = null;
try {
Configuration cfg = new Configuration();
String url = ProjectDescToStringUtil.class.getClassLoader().getResource("/").getPath();
//动态获取path
String path = url.substring(url.indexOf("/"), url.lastIndexOf("/classes"))+"/ftl";;
File dir = new File(path);
cfg.setDirectoryForTemplateLoading(dir);
Template t = cfg.getTemplate(templateFileName, "UTF-8"); // 模板文件名
writer = new StringWriter();
t.process(object, writer);
} catch (Exception e) {
//出异常,记录日志
}
return writer.toString();
}
ftl模板中取值
- 获取传递变量值:
${item.username!}
,使用!
防止空值报错
ftl模板中使用判断语句
- 在
<#if condition>
中的condition条件应直接使用item.maxputoutdays
取值,不能使用$符号
类似这种${item.maxputoutdays!}
,负责会报错,无法识别。
<#list array as item> <#if item.maxputoutdays == '0'>满标当日
<#elseif item.maxputoutdays == '1'>满标次日
<#else>
满标第${item.maxputoutdays!}日
</#if>
</#list>
- 代码中的
array
类型为JSONObject extends HashMap implements Map
JSONArray extends ArrayList implements List
ftl模板制作(Windows环境)
- 新建一个普通的txt文档,修改后缀为ftl即可
- 以下为一个简单的ftl模板,内容为html代码片段
<#list array as item>
<ul class="tabs">
<li id="decsearch">
<table width="500" border="1"
style="border-collapse: collapse; border-spacing: 0; line-height: 30px;">
<tr>
<td style="text-align: center;">借款用途</td>
<td style="padding-left: 5px;">${item.loanPurpose!}</td>
</tr>
<tr>
<td style="text-align: center;">募集期</td>
<td style="padding-left: 5px;">${item.investday!}天</td>
</tr>
<tr>
<td style="text-align: center;">起息日</td>
<td style="padding-left: 5px;">
<#if item.maxputoutdays == '0'>
募集满标当日
<#elseif item.maxputoutdays == '1'>
募集满标次日
<#else>
募集满标第${item.maxputoutdays!}日
</#if>
</td>
</tr>
</table>
</li>
</ul>
</#list>
上一篇: TA-Lib在Win7系统上的安装