freemarker,使用
freemarker if 判断对象是否为空
freemarker中判断对象是否为空,一般有2种做法:
1. 用if判断对象是否为空
<#if obj??>不为空处理</#if>
<#if obj?default("xxx")>
obj如果为空则给obj复制xxx。
2. 给对象赋默认值,避免空值
使用${obj!'xxx'}来避免对象为空的错误。如果obj为空,则obj=xxx
------------------------
Freemarker判断对象是否为空
1. freemarker中显示某对象使用${name}.
但如果name为null,freemarker就会报错。如果需要判断对象是否为空:
2. 当然也可以通过设置默认值${name!''}来避免对象为空的错误。
如果name为空,就以默认值(! 后的字符)显示。
3. 对象user,name为user的属性的情况,user,name都有可能为空,
那么可以写成${(user.name)!''},表示user或者name为null,都显示为空。判断为空
例子
<#if obj??> obj不为空 <#else> obj为空 </#if> <!--判断不为空,name为空,就以默认值(“!”后的字符)显示-->${name!''}三木表达式:
首先因为freemaker里摒弃了null这个关键词,空判断要用下面${(a!)}或者${(a)!},而且freemaker不支持冒号这种语法,但是提供了内置方法string,如下写法
${(true)?string('111','222')}
但是如果实际这么用下面写会报错
${(a=='0')?string('111','222')}因为a为null的时候,freemaker解析el表达会抛出异常,所以要把两者结合用下面写法
${((a!)=='0')?string('111','222')}
可以使用?string和?then进行类三目的操作。
bool ?string('yes',no)
bool ?then('yes','no'
freemarker怎么判断变量是否等于字符串?
<#if bb?? && bb=='字符串' >
<w:t>/</w:t>
<#else>
<w:t>${bb!""}</w:t>
</#if>