freemark語法,獲取變量,獲取對象變量,設置變量默認值




一、freemarker模板文件(*.ftl)的基本組成部分
        1. 文本:直接輸出的內容部分
        2. 注釋:不會輸出的內容,格式為<#--  注釋內容  -->
        3. 取值(插值):代替輸出數據模型的部分,格式為${數據模型}或#{數據模型}
        4. ftl指令:Freemarker指令,類似於HTML標記。
                             內建指令:開始標簽:<#directivename parameter>       結束標簽:</#directivename>      空標簽:<#directivename parameter/>   
                             自定義指令:開始標簽:<@directivename parameter>       結束標簽:</@directivename>      空標簽:<@directivename parameter/>
                             至於什么是內建指令,什么是自定義指令   我會在下面敘述到。



二、Freemarker語法及使用方法
        1. 取值(插值)指令及適用類型:
                (1) ${var}
                        適用類型:java中常用的八大基本類型以及我們的String引用類型,但是,freemarker中boolean類型顯示時true==yes  false==no
                        示例:
                                在后台文件中定義變量
                                        String strVar = "世界你好";
                                        int intVar = 10;
                                        boolean booVar = true;
                                在頁面中獲取變量:
                                        String獲取:<font color="red"> ${strVar} </font><br>
                                        int獲取:<font color="red"> ${intVar} </font><br>
                                        boolean獲取:<font color="red"> ${booVar?string("yes","no")} </font>
                                展示結果:
                                        String獲取:世界你好
                                        int獲取:10
                                        boolean獲取:yes
                (2)${var!}
                        適用類型:對 null 或者不存在的對象進行取值,可以設置默認值,例:${var!'我是默認值'}    即,有值時顯示正常值,無值時顯示默認值
                        示例:
                                在后台文件中定義變量
                                        String strVar = "世界你好";
                                        String str = null;
                                在頁面中獲取變量:
                                        String獲取:<font color="red"> ${strVar!"我是空"} </font><br>
                                        str獲取:<font color="red"> ${str!} </font><br>
                                        str獲取:<font color="red"> ${str!"默認"} </font><br>
                                展示結果:
                                        String獲取:世界你好
                                        str獲取:
                                        str獲取:默認
                (3)${封裝對象.屬性}
                        適用類型:對封裝對象進行取值,例:${User.name}
                        示例:
                                在后台文件中封裝對象User[ name,  age ]
                                        String name = "姓名";
                                        int age = 18;
                                在頁面中獲取變量:
                                        name獲取:<font color="red"> ${User.name} </font><br>
                                        age獲取:<font color="red"> ${User.age} </font><br>
                                展示結果:
                                        name獲取:姓名
                                        age獲取:18
                (4)${date?String('yyyy-MM-dd')}
                        適用類型:對日期格式進行取值,在這里我要強調的是,定義Date類型的變量時,java.util.Date無法輸出日期,須使用java.sql.Date
                        示例:
                                在后台文件中定義變量
                                        java.sql.Date date = new Date().getTime();
                                        java.sql.Date time = new Date().getTime();
                                        java.sql.Date datetime = new Date().getTime();
                                在頁面中獲取變量:
                                        date獲取:<font color="red"> ${date?string('yyyy-MM-dd')} </font><br>
                                        time獲取:<font color="red"> ${date?string('HH:mm:ss')} </font><br>
                                        datetime獲取:<font color="red"> ${date?string('yyyy-MM-dd HH:mm:ss')} </font><br>
                                展示結果:
                                        name獲取:姓名
                                        age獲取:18
                (5)${var?html}
                        適用類型:轉義HTML內容
                        示例:
                                在后台文件中封裝變量Menu[ name, model ]
                                        Menu m = new Menu();
                                        m.setName(" freemarker ");
                                        m.setModel("<font color = 'red'>我只是個菜單</font>");
                                在頁面中獲取變量:
                                        非轉義獲取:<font color="red"> ${m.model} </font><br>
                                        轉義獲取: ${m.model?html} </font><br>
                                展示結果:
                                        非轉義獲取:我只是個菜單
                                        轉義獲取:<font color = 'red'>我只是個菜單</font>
                (6)<#assign num = 100 />
                        適用類型:定義變量,支持計算和賦值
                        示例:
                                在頁面中定義變量:
                                        <#assign num = 100 />
                                        num獲取:<font color="red"> ${num)} </font><br>
                                        計算結果:<font color="red"> ${num * 10} </font><br>
                                展示結果:
                                        num獲取:100
                                        計算結果:1000
                (7)對List集合進行取值
                        <#list  list集合  as  item>
                               ${item}    --取值
                        </#list>
                        示例:
                                在后台文件中定義變量
                                        List<String> strList = new ArrayList<String>();
                                        strList.add("第一個值");
                                        strList.add("第二個值");
                                        strList.add("第三個值");
                                在頁面中獲取變量:
                                        <#list  strList  as  item>
                                               ${item!}<br/>    --取值
                                        </#list>
                                展示結果:
                                        第一個值
                                        第二個值
                                        第三個值
                (8)對Map集合進行取值
                        <#list map?keys as key>
                               ${key}:${map[key]}
                        </#list>
                        示例:
                                在后台文件中定義變量
                                        Map<String, Object> m = new HashMap<String, Object>();
                                        m.put("name","姓名");
                                        m.put("age",18);
                                        m.put("sex","男");
                                在頁面中獲取變量:
                                         <#list m?keys as key>
                                                ${key}:${m[key]}
                                         </#list>
                                展示結果:
                                        name:姓名
                                        age:18
                                        sex:男
        2. 條件判斷指令:
                (1) if
                        格式:<#if 條件>
                                        輸出
                                     </#if>
                        示例:
                                在頁面中定義變量並判斷條件:
                                        <#assign age = 18 /><br>
                                        <#if age == 18>
                                                <font color="red"> age = 18</font>
                                        </#if>
                                展示結果:
                                        age = 18
                (2) if - else
                        格式:<#if 條件>
                                        輸出
                                    <#else>
                                        輸出
                                    </#if>
                        示例:
                                在頁面中定義變量並判斷條件:
                                        <#assign age = 20 /><br>
                                        <#if age == 18>
                                                <font color="red"> age = 18</font>
                                        <#else>
                                                <font color="red"> age != 18</font>
                                        </#if>
                                展示結果:
                                        age != 18
                (3) if - elseif - else
                        格式:<#if 條件1>
                                        輸出
                                    <#elseif 條件2>
                                        輸出
                                    <#else>
                                        輸出
                                    </#if>
                        示例:
                                在頁面中定義變量並判斷條件:
                                        <#assign age = 20 /><br>
                                        <#if age &gt; 18>
                                                <font color="red">青年</font>
                                        <#elseif age == 18>
                                                <font color="red"> 成年</font>
                                        <#else>
                                                <font color="red"> 少年</font>
                                        </#if>
                                展示結果:
                                        成年
                (4) switch  --常與case break default一起使用  參數可為字符串
                        格式:<#switch var>
                                    <#case 條件1>
                                          輸出
                                    <#break>
                                    <#case 條件2>
                                          輸出
                                    <#break>
                                    <#default>
                                          輸出
                                    </#switch>
                        示例:
                                在頁面中定義變量並判斷:
                                       <#switch var="星期一">
                                       <#case "星期一">
                                               油燜大蝦
                                       <#break>
                                       <#case "星期二">
                                               炸醬面
                                       <#break>
                                       <#default>
                                               肯德基
                                       </#switch>
                                展示結果:
                                        油燜大蝦
        3. 自定義函數、自定義指令:
                (1) 自定義函數
                        實現TemplateMthodModelEx
                (2) 自定義指令
                        實現TemplateDirectiveModel
                        示例:
                                <@自定義指令名稱 入參(key-value格式) ; 出參(list格式)>
                                        運行條件
                                </@自定義指令名稱>

                                PS:不同的返回值用逗號( , )間隔開

        4.常用內建函數、macro(宏指令)、function(函數指令):
                (1) 常用內建函數
                        處理字符串:
                             substring                                          截取字符串,包頭不包尾(下標)
                             cap_first                                          第一個字母大寫
                             end_with                                           以什么字母結尾    
                             contains                                            是否包含目標字符串
                             date  datetime  time                       轉換成日期格式
                             starts_with                                      以什么字母開頭
                             index_of                                          返回某個指定的字符串值在字符串中首次出現的位置(下標)
                             last_index_of                                  獲取指定字符出現的最后位置(下標)
                             split                                                  分隔
                             trim                                                  去兩端空格
                        處理數字:
                             string                                              
                             x?string("0.##")                          變成小數點后幾位
                             round                                              四舍五入
                             floor                                               去掉小數點
                             ceiling                                             近1   變成整數
                        處理list:
                              first:                                              取List值第一個值
                              last:                                                取List值最后一個值
                              seq_contains:                                是否包含指定字符
                              seq_index_of:                               指定字符所在位置
                              size:                                                集合大小
                               reverse:                                          集合倒序排列
                              sort:                                                對集合進行排序
                              sort_by:                                         根據某一個屬性排序
                              chunk:                                            分塊處理
                        其他:
                              is_string:                                      是否為字符類型
                              is_number:                                    是否為整數類型
                              is_method:                                   是否為方法
                              ():                                                  判斷整個變量
                              has_content:                                判斷對象是否為空或不存在
                              eval:                                           求值
                (2) macro(宏指令)
                        調用:<@macro_name param />
                        語法:<#macro  變量名  參數>  
                                            <#nested/>  
                                    </#macro>
                (3) function(函數指令)
                        調用:${function_name(param)}
                        語法:<#function  變量名  參數>  
                                    <#return>  
                                    </#function>

 

原文:

https://www.cnblogs.com/JealousGirl/p/6914122.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM