如何定义freemarker功能?

时间:2014-11-17 04:07:34

标签: freemarker

我定义了一个freemarker函数,例如:

<#function ehtml str>
    <#if (str??) >
        <#return str?html>
    <#else>
        <#return "">
    </#if>
</#function>

我尝试使用&lt; #if(str ??)&gt;来检查'str'不存在,但它不起作用。我仍然收到错误“必需参数:str未指定”。当参数为空时。

1 个答案:

答案 0 :(得分:2)

由于根据该功能定义需要str 参数,因此它甚至无法到达<#if str??>行(()冗余的BTW那里)。现在,使其成为非必需品的唯一方法是为其提供默认值,例如<#function ehtml str=''>。所以实际上这个函数可以写成<#function ehtml str=''><#return str?html></#function>。事实上,如果你只想写${foo!?html}而不是更长的null,那么最好的就是${ehtml(foo)}。这就是为什么FTL毕竟拥有maybeNull! / maybeNull!default运算符的原因。那么你就不需要这个功能了。