1

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

4

1 回答 1

4

如果缺少值,您应该检查模板,然后打印对收件人有意义的内容(“null”当然对他们没有意义)。就像,如果项目不需要价值,则不适用:

<li><b>${item.key}</b> : ${item.value!'N/A'}</li>

或者如果由于记录仍然不完整而缺少值,则跳过整行:

<#if item.value??>
  <li><b>${item.key}</b> : ${item.value}</li>
</#if>
于 2012-07-20T13:25:19.367 回答