有關freemarker的語法,循環,邏輯

==============經常使用語法=================
三.
EG.一個對象BOOK
1.輸出 ${book.name}
空值判斷:${book.name?if_exists },
${book.name?default(‘xxx’)}//默認值xxx
${ book.name!"xxx"}//默認值xxx
日期格式:${book.date?string('yyyy-MM-dd')}
數字格式:${book?string.number}--20
${book?string.currency}--<#-- $20.00 -->
${book?string.percent}—<#-- 20% -->
插入布爾值:
<#assign foo=ture />
${foo?string("yes","no")} <#-- yes -->html

 

=============邏輯判斷==================
2.
a:
<#if condition>...
<#elseif condit
inc 發佈於2007-09-08 16:18:57
ion2>...
<#elseif condition3>......
<#else>...
其中空值判斷能夠寫成<#if book.name?? >web


b:
<#switch value>
<#case refValue1>
    ...
    <#break>
<#case refValue2>
    ...
    <#break>
...
<#case refValueN>
    ...
    <#break>
<#default>
    ...
app


===============循環讀取=================
3.
<#list sequence as item>
...

空值判斷<#if bookList?size = 0>
e.g.
<#list employees as e>
${e_index}. ${e.name}
ide

<#if mole?default(0)!=0>性能

=============用來壓縮空白空間和空白的行===============spa

用例
<#assign x = "    moo    ">
(<#compress>
1 2 3   4    5
${moo}
test onlyscala

I said, test onlyorm

)
輸出
(1 2 3 4 5
moo
test only
I said, test only)htm

==============Sequence內置的計數器==============對象

3. Sequence內置的計數器: xxx_index
用途:顯示序號
模板:

<#list employees as e>
${e_index}. ${e.name}

輸出:

1. Readonly
2. Robbin


==============Sequence內置的分段器=====================
4. Sequence內置的分段器: chunk
用途:某些比較BT的排版需求
模板:

<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>
<#list seq?chunk(4) as row>


  • <#list row as cell>${cell}


<#list seq?chunk(4, '-') as row>

<#list row as cell>${cell}


輸出:


  • a

  • b

  • c

  • d



  • e

  • f

  • g

  • h



  • i

  • j


a
b
c
d


e
f
g
h


i
j
-
-

 


=====================freemarker的list================================


Scalar String:${scalarString}   
Scalar Number:${scalarNumber}
Object is:${scalarObject}

List使用樣例-List元素爲Scalar對象:

<#list scalarList as value0>
    Scalar List值:${value0}

List使用樣例-List元素爲User對象:

<#list userList as listUser>
    List對象User Id值:${listUser.userId}

Map使用樣例-Map Values元素爲Scalar :

<#list scalarMap?keys as mykey>
    Scalar Map key is :${mykey}
    Scalar Map value is:${scalarMap[mykey]}

Map使用樣例-Map Values元素爲User對象:

<#list userMap?keys as key1>
    <#assign mapUser="${userMap[key1]}" >
    User Object is :${mapUser}
    <#--
    如下方法有問題
    User is :${mapUser.userId}

    -->

==============FreeMarker中list排序==============
升序:
<#list list?sort_by("time") as v>

降序:
<#list list?sort_by("time") as v>

 


===============freemarker在模板中定義變量==============

在模板中定義的變量有三種類型:
plain變量:能夠在模板的任何地方訪問,包括include指令插入的模板,使用assign指令建立和替換
<#include "/WEB-INF/index/top.html">


==============freemarker.properties配置================
(1)解決輸出中文亂碼問題:
default_encoding=UTF-8
locale=zh_CN
number_format=#

(2)提升freemarker的性能
template_update_delay=60000

(3)freemarker的標籤種類:
${..}
# 表明是FTL tags
<#if ...>
<#list totalList as elementObject>...
@ ,表明用戶自定義的標籤
<#-- --> 註釋標籤,注意不是

=====================將圖片整除換行====== <#if (u_index+1)%4=0>當圖片超過五個就換行=======
  





                                                                               












                                        <#if map["最新-圖片"]?exists>     <#list map["最新-圖片"] as u>     <#if (u_index+1)%4=0>                     <#else>                                                          

                   





               

                                                                                           

                   

                   
                    <@jf.greet title=u.title len=4 />

                   

                   





               

                                                                                           

                   

                   
                    <@jf.greet title=u.title len=4 />

                   

                   

                 
               
    
    
    
                          
           
                   
                 
               

===============================freemarker中在application
${Application.web_title}

在類裏:
list=dser.indexvideo(cvo);
if(list.size()!=0){
map.put("最新",list);}

在html靜態頁裏:
<#import "/WEB-INF/ftl/index.ftl" as jf>
(index.ftl
<#macro greet title len>
<#if title?length != 0>
<#if (title?length>len)>
${title[0..len-1]} <#else>
${title?trim}

<#else>
${title?default("")}


<#--時間比較-->
<#macro vstime start end>
<#if start?default("")==""||end?default("")=="">
--
<#else>
<#assign starts=start?replace("-","") >
<#assign ends=end?replace("-","") >
<#if (starts?number>ends?number)>
以過時
<#else>
未過時



<#if map["最新"]?exists><#list map["最新"] as u>${u.filepath?default('')}<@jf.greet title=u.title len=6 />

相關文章
相關標籤/搜索