我正在寻找一种避免在FreeMarker模板中使用它的方法:
<#if getName()??>
<Name>getName()</Name>
</#if>
因为我需要测试很多东西。
有没有办法通过使用标签中的参数来做到这一点? 如果值为null,我不希望标记被写入。 (所以感叹号还不够)
此致
答案 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>
如果未定义其中一个属性,则将从输出中省略整个标记。