Freemarker内建函数



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/