FTL指令常用标签及语法(2)-- 高级语法

1、global全局赋值语法

<#global name=value> 

<#global name1=value1 name2=value2 ... nameN=valueN> 

<#global name> 
  capture this 


2、setting 语法

// 用来设置整个系统的一个环境 
locale // zh_CN 中文环境
number_format 
boolean_format 
date_format , time_format , datetime_format 
time_zone 
classic_compatible
// 例1:
<#setting number_format="percent"/>    // 设置数字默认输出方式('percent',百分比)

// 例2:
// 假如当前是匈牙利的设置,然后修改成美国
${1.2} // 输出1,2
<#setting locale="en_US"> 
${1.2} // 输出1.2,因为匈牙利是采用", "作为十进制的分隔符,美国是用". "

3、macro宏指令

例子1:

<#-- 定义宏 -->
<#macro test foo bar="Bar" baaz=-1> 
  Text: ${foo}, ${bar}, ${baaz}


<#-- 使用宏 -->
<@test foo="a" bar="b" baaz=5*5/>  // 输出:Text: a, b, 25
<@test foo="a" bar="b"/>        // 输出:Text: a, b, -1
<@test foo="a" baaz=5*5-2/>     // 输出:Text: a, Bar, 23
<@test foo="a"/>                   // 输出:Text: a, Bar, -1

例子2:

<#-- 定义一个循环输出的宏 -->
<#macro list title items> 
  ${title}
  <#list items as x>
    *${x}
   
 

<#-- 使用宏 -->
<@list items=["mouse", "elephant", "python"] title="Animals"/>
// 输出Animals *mouse *elephant *python

例子3:

<#-- 嵌套宏 -->
<#macro border>
  
    <#nested>
  
<#-- 嵌套宏使用 --> <@border>   hahaha 输出结果:   
hahaha

例子4:在nested指令中使用循环变量时,可以使用多个循环变量,看如下代码:

<#-- 循环嵌套宏 -->
<#macro repeat count>
  <#list 1..count as x>
    <#nested x, x/2, x==count> // 使用nested指令时指定了三个循环变量
  


<#-- 使用宏 -->
<@repeat count = 4; c, halfc, last>
  ${c}. ${halfc}<#if last> Last!

// 输出结果:
// 1. 0.5
// 2. 1
// 3. 1.5
// 4. 2 Last!

freemarker 宏嵌套nested 的使用:
http://blog.sina.com.cn/s/blog_7e5699790100z59g.html

4、结束macro指令

// return指令用于结束macro指令
<#-- 创建宏 -->
<#macro book>
  spring
  <#return>
  j2ee


<#-- 使用宏 -->
<@book />
// 上面的代码输出:spring,而j2ee位于return指令之后,不会输出.

FreeMarker 工具类:

http://files.cnblogs.com/files/duke-cui/FreeMarkerUtil.rar

测试 Project:

http://files.cnblogs.com/files/duke-cui/TestFreeMark.rar

你可能感兴趣的:(Freemaker)