Freemarker 内建函数。
在以前的日志里 写了Freemarker的内建函数,跟大多数网上介绍的一样,主要说了Sequence,Hash,字符串,数字,布尔值的内建函数。
但是不全,比如说,想判断一个集合是否包含某一个元素,很多人都没说。现在把一些用的不是很多但比较有用的补充下吧。
Freemarker的内建函数有:
chunk, is_date, last, root, j_string, round, is_hash, long, float, contains,ends_with, namespace, matches, time, values, seq_last_index_of, uncap_first, byte, substring, is_transform, web_safe, groups, seq_contains, is_macro, index_of, word_list, int, is_method, eval, parent, xml, number, capitalize, if_exists, rtf, node_type, double, is_directive, url, size, default, floor, ceiling, is_boolean, split, node_name, is_enumerable, seq_index_of, is_sequence, sort, is_node,
sort_by, left_pad, cap_first, interpret, children, node_namespace, chop_linebreak, date, short, last_index_of, is_collection, ancestors, length, trim, datetime, is_string, reverse, c, keys, upper_case, js_string, has_content, right_pad, replace, is_hash_ex, new, is_number, lower_case, is_indexable, string, exists, html, first
下面解释一些函数;
XXX?contains(XXX);是用来判断一个字符串是否包含一些字符。
XXX?seq_contains(XXX);用来判断一个集合是否包含元素,集合的元素要和判断的元素的类型一致。
① chunk:Sequence内置的分段器,用途:某些比较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>
②is_date:判断是不是日期格式,如 <#if user.created?is_date>…</#if>
③last:序列的内置方法
http://blog.163.com/ksm19870304@126/blog/static/3745523320116203223266/