在 Freemarker 中,如果使用的对象为 null,freemarker 模板解析就会报错。此时可以使用两个问号(??)判断对象是否为空,例如:
<ul> <!-- 判断 pageUrl 是否为空,如果不为空,则创建 <li> 标签 --> <#if pageUrl??> <li> <a href="${pageUrl}">测试页面</a> </li> </#if> </ul>
判断 List 是否为空,即 List 中是否存在元素,可以使用 ?size 运算符,例如:
<#if orgList?? && (orgList?size > 0) > <ul> <#for orgList as org> <li>${org.name?default("-")}</li> </#for> </ul> </#if>
上面代码中,先判断 orgList 是否为 null,然后判断 orgList 是否有元素,如果有,则利用 for 循环渲染列表(数组判断方式类似)。
用 freemarker 取出 map 值后,判断该值是否等于某一字符串,可以使用内建函数 ?string 来进行判断。例如:
<#if Data.get(key)?exists> <#if Data.get(key)?string !="null">${Data.get(key)}</#if> </#if>
上述代码中,先判断 key 是否存在,如果存在,继续判断 key 取值不等于 null 字符串,则显示该值。
freemarker 中判断字符串为空,直接使用 != 运算符即可,例如:
<#if uploadUrl?? && uploadUrl != ""> <a href="${updateUrl}">更新数据</a> </#if>