freemarker的使用:
1、拷貝freemarker.jar包到類路徑即可(struts2中freemarker-2.316是必須引入的jar包)
2、Freemarker非常容易使用,定義好模版之後,程式設計建立對象模型,并将資料
模型與模版結合産生輸出即可
3、Freemarker的關鍵在于模版檔案的編寫
測試:
1、 定義模闆檔案:(目錄為E:/test)
test.ftl:
輸出模闆中的資訊:${abc}
包含其他模闆檔案:<#include "test1.ftl">
Test1.ftl:
test11111.ftl:${abc}
2、 測試freemarker類:(引入相應jar)
[java] view plaincopy
public class TestFreeMarker {
@Test
public void testFreeMarker() {
String dir = "E:/test";
try {
Configuration cfg = new Configuration();
//定義從哪裡加載模闆檔案
cfg.setDirectoryForTemplateLoading(new File(dir));
//定義從哪裡擷取模闆:FreeMarkerManager.class所在的包下的templates包(檔案夾)
//cfg.setTemplateLoader(new ClassTemplateLoader
// (FreeMarkerManager.class,"templates"));
//定義對象包裝器
cfg.setObjectWrapper(new DefaultObjectWrapper());
//定義異常處理器
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
//定義資料模型
Map root = new HashMap();
root.put("abc", "hello,fled");
//通過freeMarker解釋模闆,首先需要獲得template
Template template = cfg.getTemplate("test.ftl");
//定義解釋完模闆後的輸出
PrintWriter printWriter = new PrintWriter(
new BufferedWriter(
new FileWriter(dir+"/out.txt")
)
);
//解釋模闆
template.process(root, printWriter);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3、 執行測試類,打開輸出檔案檢視結果:
輸出結果為:
輸出模闆中的資訊:hello,fled
包含其他模闆檔案:test11111.ftl:hello,fled
4、 帶格式的循環等模闆檔案示例;
<table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0">
<#assign i=0>
<#list form.fields as field>
<#if field_index % 2 = 0>
<#assign i = i+1>
<tr>
</#if>
<td class="tdEditLabel" >${field.fieldLabel}</td>
<td class="tdEditContent"><#include "${field.fieldInput.template}">
<#if i == 0 || !field_has_next>
<#assign i = 0>
</tr>
</#list>
</table>