火星文 技术研习社

Noname Cat, Keep Thinking
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Freemarker - 几个比较实用的例子

Posted on 2006-11-25 13:47  剑廿三  阅读(1128)  评论(0编辑  收藏  举报
http://www.javaeye.com/topic/15980

列出几个和JSP或者Velocity相比起来比较方便的用途

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>