用freemarker取出map值后,判断该值是否等于某一字符串,可以使用内建函数?string来进行判断。
实际代码:Data 是一个Record对象【JFinal的,其实可以理解为一个Map】。Data.get(key)根据map的key取出value对应的值。
<ConditionData>
<#list datas as Data>
<Condition>
<#list Data.getColumnNames() as key>
<${key}>
<#if Data.get(key)?exists><#if Data.get(key)?string !="null">${Data.get(key)}</#if></#if>
</${key}>
</#list>
</Condition>
</#list>
</ConditionData>
内建函数?string其他参考:http://www.blogjava.net/libin2722/articles/229263.html。片段如下
插入字符串值:直接输出表达式结果
插入数字值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个例子:
<#setting number_format="currency"/> <#assign answer=42/> ${answer} ${answer?string} <#-- the same as ${answer} --> ${answer?string.number} ${answer?string.currency} ${answer?string.percent}
输出结果是:
$42.00 $42.00 42 $42.00 4,200%
插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个使用格式模式的例子:
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")} ${lastUpdated?string("EEE, MMM d, ‘‘yy")} ${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a ‘(‘zzz‘)‘")}
输出的结果类似下面的格式:
2003-04-08 21:24:44 Pacific Daylight Time Tue, Apr 8, ‘03 Tuesday, April 08, 2003, 09:24:44 PM (PDT)
时间: 2024-10-10 09:41:02