Freemarker - 几个比较实用的例子

    技术2022-05-11  95

    偶用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(" ")}</td>

    输出:

    User: Anonymous <td> </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>

     

    最新回复(0)