小编典典

freemarkers跳过assertNonNull InvalidReferenceException

java

我用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,但是如果我可以避免此步骤,那就更好了


阅读 331

收藏
2020-11-30

共1个答案

小编典典

您应该在模板中检查该值是否丢失,然后打印对接收者有意义的内容(“ 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>
2020-11-30