FreeMarker中常用的一些标签及语句

来源:互联网 发布:淘宝开店会员名大全 编辑:程序博客网 时间:2024/06/05 17:02

首先说一下FreeMarker中的注释为: <#–这里是注释的内容 –>

if语句

<#-- 判断num1等于18就输出 18一枝花! --><#if num1==18>18一枝花!</#if><#-- 字符串需要加上双引号 --><#if user=="小明">欢迎你</#if><#--布尔值 --><#if b2>b2是true!</#if>  

if else 语句测试:

<#-- 不是使用> 大部分时候,freemarker会把>解释成标签结束(大于可以写 gt )--><#if num0 gt 18>      及格!<#else>    不及格!</#if>

时间格式化处理

<#-- 将变量datel 时间格式转换成 yyyy-MM-dd HH:mm:ss 格式输出 -->${date1?string("yyyy-MM-dd HH:mm:ss")}

内建函数:

1. html: 对字符串进行HTML编码;2. cap_first: 使字符串第一个字母大写;3. lower_case: 将字符串转成小写;4. upper_case: 将字符串转成大写;5. size  获得集合中元素的个数(集合相关常用的内建函数)6. int: 取得数字的整数部分(数字值相关常用的内建函数)内建函数的使用:   变量名?内建函数名,  假设后台传入一个htm2的参数,值为 <b>粗体</b>root.put("htm2", "<b>粗体</b>");<#--使用内建函数 html 对字符串(htm2变量)进行HTML编码-->${htm2?html}

空值处理:

${sss}  <#--这样写 如果${sss} 没有定义这个变量,会报异常! -->${sss!} <#--这样写 没有定义这个变量,默认值是空字符串! -->${sss!"abc"}  <#--这样写 没有定义这个变量,默认值是字符串abc! -->

遍历集合

<#-- 遍历 ls , as ys 表示遍历ls时中的每个元素取别名为 ys --><#list ls as ys >    <b> ys </b><br/></#list>

取普通变量和对象的值:

<#--user 如果是一个普通变量,可以这样取值-->${user},<#--user 如果是一个对象,可以这样取该对象中name属性的值-->${user.uname}

取List集合中的数据

<#-- lst为一个List集合 根据下标索引取对应得值 -->${lst[0].city},${lst[1].city},${lst[2].city},

include包含

<#--将123.txt包含进来,这可以是包含另一个模板文件或者任何类型的文件--><#include "123.txt" />

自定义指令

<#--定义一个指令dtest --><#macro dtest>      <b>aaa</b>    <b>bbb</b></#macro><#--调用上面定义的 dtest宏指令 --><@dtest/><@dtest /><#--定义一个指令dtest2 如下 a b c 为参数 --><#macro dtest2 a b c >    ${a}==${b}==${c}</#macro><#--调用上面定义的 dtest2宏指令,并传人参数 --><@dtest2 a="老高" b="老张" c="老马" /><#--定义一个指令dtest3, <#nested>是获取调用时标签中间传入的内容 --><#macro dtest3>   <table border=4 cellspacing=0 cellpadding=4>      <tr>          <td>             <#nested>           </td>      </tr>  </table> </#macro> <#--调用上面定义的 dtest3宏指令,标签中间是传入的内容 --><@dtest3 >这是要传入的内容!</@dtest3>

测试命名空间及优先级

<#--b.ftl文件内容如下--><#macro copyright date>  <p>Copyright (C) ${date} 测试</p> </#macro> <#---这里是定义一个mail变量,值为123@163.com  --><#assign mail = "123@163.com"> 
<#-- 引入一个b.ftl模板 取别名为bb --><#import "b.ftl" as bb  /> <#--这里是调用bb模板中的copyright指令 并传入date参数 --><@bb.copyright date="2010-2011" /><#--这里是获取bb模板中的mail变量值 -->${bb.mail}<#--在当前模板中又定义一个跟bb模板中一样的变量--><#assign mail="234@163.com"  /><#--这样调用的是当前的模板中的mail变量,会输出234@163.com  -->${mail}<!-- 重新设置bb模板中 mail变量的值  --><#assign mail="7654@163.com" in bb  /><#--再次获取bb模板中的mail变量值,输入的是修改后的值,为7654@163.com -->${bb.mail}

比 较 运 算

=   (或者==) 判断两个值是否相等;!=  判断两个值是否不相等;注: =和!=可以用作字符串、数值和日期的比较,但两边的数据类型必须相同。而且FreeMarker的比较是精确比较,不会忽略大小写及空格。 >(或者gt)    大于>=(或者gte)   大于等于< (或者lt)    小于<=(或者lte)   小于等于注: 上面这些比较运算符可以用于数字和日期,但不能用于字符串。大部分时候,使用gt比>有更好的效果,因为FreeMarker会把>解释成标签的结束字符。可以使用括号来避免这种情况,如:<#if (x>y)>。逻辑操作:!registered && (firstVisit || fromEurope) 内建函数:name?upper_case 方法调用:repeat("What", 3) 处理不存在的值 name!  或者  (user.name)!如不存在默认值:name!"unknown"  或者(user.name)!"unknown" 检测不存在的值:name?? 或者(user.name)?? 

逻辑运算符

&&  逻辑与||  逻辑或!   逻辑非逻辑运算符只能用于布尔值。

算术运算符

FreeMarker表达式中支持  +  -  *  /  %   运算符

数据类型常见示例

直接指定值 字符串 : "Foo"或 者'Foo'"It's \"quoted\""r"C:\raw\string" 数字:123.45 布尔值:true, false 序列:["foo", "bar", 123.45] , 1..100 从序列中检索:products[5] 哈希表:{"name":"green mouse", "price":150} 检索变量(如 顶层变量为 user) 从哈希表中检索数据:user.name, user[“name”] 特殊变量:.main 字符串操作 插值(或连接):"Hello ${user}!"(或"Free" + "Marker") 获取一个字符:name[0] 序列操作 连接:users + ["guest"] 序列切分:products[10..19]  或  products[5..] 哈希表操作 连接:passwords + {"joe":"secret42"} 算数运算: (x * 1.5 + 10) / 2 - y % 100 截取子串截取子串可以根据字符串的索引来进行,如果指定一个索引值,则取得字符串该索引处的字符;如果指定两个索引值,则截取两个索引中间的字符串子串。如:<#assign number="01234">${number[0]} <#-- 输出字符0 -->${number[0..3]} <#-- 输出子串“0123” -->
原创粉丝点击