天天看點

Freemarker模闆管理執行個體

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>