FreeMarker:在没有 if 块的情况下显示标签

FreeMarker : diplay tag on condition without if block

我正在寻找一种方法来避免在 FreeMarker 模板中使用它:

<#if getName()??>
    <Name>getName()</Name>
</#if>

因为我需要测试很多东西。

有没有办法通过使用标签中的参数等方式来实现? 如果值为空,我根本不想写入标签。 (所以感叹号不够)

此致

如果您的所有标签都遵循相同的基本结构:

<Tag>value</Tag>

您可以使用宏来节省您自己的输入时间:

<#macro optional tag value=[]>
    <#if value?has_content>
         <${tag}>${value}</${tag}>
    </#if>
</#macro>

然后像这样应用它:

  <@optional tag='User' value=user/> 
  <@optional tag='Name' value=name/>

导致以下输出代码:

  <User>myuser</User>
  <Name>myname</User>

如果其中一个属性未定义,则整个标记将从输出中省略。