Freemarker - 幾個比較實用的例子

偶用Freemarker做模本語言有一段時間了,列出幾個和JSP或者Velocity相比起來比較方便的用途,目的是引誘更多的人跳上Freemarker這個賊船,:evil:

1. String內置的JavaScript轉換: js_string
用途:用於JavaScript轉義,轉換',",換行等特殊字符
模板:

<script>
alert("${errorMessage?js_string}");
</script>

輸出:

<script>
alert("Readonly/'s pet name is /"Cross Bone/"");
</script>

2.內置的默認值處理:default
用途: 用於處理默認值
模本:

User: ${userLogin.name?default("Anonymous")}

<td>${(employee.department.manager.name)?default("&nbsp;")}</td>

輸出:

User: Anonymous
<td>&nbsp;</td>

注,可以對整個對象樹加上(),再用內置處理器這種方便的做法,偶也是最近剛學會的,以前一直用很傻的方法做.....

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

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

輸出:

1. Readonly
2. Robbin

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

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

<#list seq?chunk(4, '-') as row>
<tr>
<td><#list row as cell>${cell} </#list></td>
</tr>
</#list>

輸出:

<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<ul>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
</ul>
<ul>
<li>i</li>
<li>j</li>
</ul>

<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>e</td>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>j</td>
<td>-</td>
<td>-</td>
</tr>

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章