FreeMarker:没有if块的条件下的diplay标签

时间:2017-06-06 08:18:41

标签: java xml freemarker

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

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

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

有没有办法通过使用标签中的参数来做到这一点? 如果值为null,我不希望标记被写入。 (所以感叹号还不够)

此致

1 个答案:

答案 0 :(得分:1)

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

<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>

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