1

フリーマーカーを使用してオブジェクトのリストをレンダリングします。

<ul>
    <#list publication as item>
        <li><b>${item.key}</b> : ${item.value}</li>
    </#list>
</ul>

ただし、一部のアイテムには、例外を発生させるitem.valuenullがあります。

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」または何もレンダリングせず、それをブロックする代わりにメールを送信し続けることを望みます

フリーマーカーに送信する前に、いつでも最初にリストを確認できますが、この手順を回避できれば、より良いでしょう。

4

1 に答える 1

4

値が欠落している場合はテンプレートをチェックインしてから、受信者にとって意味のあるものを出力する必要があります (「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>
于 2012-07-20T13:25:19.367 に答える