ftl对空值敏感,如果为空则抛出异常。
1.${} 取值内容摘要:${content.summary} .新版本可用
2. <# > 定义(ftl标签). 新版本可用[# ]
<#assign lastDate="${content.lastHitDate}"> //声明变量,当${content.lastHitDate}不存在时抛出异常
<# if>指令
<#if user=='dayang'> he is dayang </#if> //user可以是模型里的数据:${user},也可以是声明变量
<#if product.price!=0>price is not 0</#if>
if .....else
<#if p[0].price<p[1].price> 小于市场价
<#else>大于市场价
</#if>
<# list>指令
<#list root.subList[0].productList as product>
<#if product_index>=5>
<li><a href="${ctx}/procuct/${product.sid}.html"> ${product.productName?if_exists} </a></li>
<#if product_index>11> <#break></#if> //跳出循环
</#if>
</#list>
<#list topContents as x>
<#if x_index==0>
<#assigncontent="${x.content?replace(' ','')}">//声明一个变量并赋值
<#assign content="${x.content?replace(' ','')}">
<#assign content="${content?replace(' ','')}">
<#assign content="${content?replace('<.*?>','','r')}">
<h1><a href="#">${x.subTitle}</a></h1>
<h2><a href="#">
<#if (content?length > 50) >
${content?substring(0,50)}...
<#else>
${content}
</#if>
</a>[<a href="#">查看全文</a>]
</h2>
<#else>
<#if x_index==1><ul></#if>
<li><a href="#">${x.subTitle}</a></li>
<#if x_index==topContents?size-1></ul></#if>
</#if>
</#list>
3.注释
<#-- 我是注释-->
4.<@ >宏,自定义标签,新版本可用[@ ]
二。处理不存在的变量。
以前:?exists ,?if_exists ,?default
<#if (root.subList?exists)&& (root.subList?size>0)>
${product?if_exixts.originalPrice?if_exists}
现在:!" " ,??
${content.lastHitDate!"为空时显示的值"}//当lastDate为空时给content.lastHitDate赋默认值“为空时显示的值”,并显示出来。
<#if content.lastHitDate??>不为空<#else>我为空1</#if>//当lastDate为空时显示“我为空1”
另一种可行方法:配置文件
三.内置函数。
?length 取长度
?size 序列中的元素个数 //<#if (channelContent?size>0) ><li>栏目文章列表为空</li> </#if>
?substring 取子字符串 //${summary?substring(0,50)} //从索引0开始,长度为50
?replace 字符串替换
?trim 去掉字符串首尾空格
?cap_first :字符串的第一个字母变大写
?lower_case :字符串的小写形式
?upper_case:字符串的大写形式
?html :html转义字符
?int 数字的整数部分
例子:
${userName?[0,10]}
${appHtml?replace('<@person.component/>' ,"ak47')}
<#assign content="${x.content?replace(' ','')}">
<#assign content="${content?replace(' ','')}">
<#assign content="${content?replace('<.*?>','','r')}">