我用freemarker渲染对象列表:
<ul> <#list publication as item> <li><b>${item.key}</b> : ${item.value}</li> </#list> </ul>
但是某些项目具有item.value null会引发异常:
freemarker.core.InvalidReferenceException: Expression item.value is undefined on line 12, column 44 in mailTemplate. at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125) at freemarker.core.Expression.getStringValue(Expression.java:118)
我希望该freemarker呈现“ null”或不显示任何内容,并继续发送邮件,而不是对此进行阻止
我总是可以先检查列表,然后再将其发送到freemarker,但是如果我可以避免此步骤,那就更好了
您应该在模板中检查该值是否丢失,然后打印对接收者有意义的内容(“ null”对于接收者当然没有意义)。像,如果项目不需要任何值,则为N / A:
<li><b>${item.key}</b> : ${item.value!'N/A'}</li>
或如果由于记录仍不完整而缺少该值,则跳过整行:
<#if item.value??> <li><b>${item.key}</b> : ${item.value}</li> </#if>