2014-11-17 90 views
0

我定義了一個FreeMarker的功能,如:如何定義自由標記函數?

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

我嘗試檢查「STR」使用<#如果(STR?)>是不存在的,但它不工作。我仍然得到一個錯誤「所需的參數:沒有指定str。」當參數爲空時。

回答

2

由於str參數是根據該函數定義所要求的,它甚至不到達<#if str??>線(順便說一句即()是冗餘的存在)。現在唯一不需要的方法是爲其提供默認值,如<#function ehtml str=''>。所以實際上這個函數可以寫成<#function ehtml str=''><#return str?html></#function>。事實上,最好的辦法是如果你只寫${foo!?html}你期望的null,而不是更長的${ehtml(foo)}。這就是爲什麼FTL畢竟擁有maybeNull!/maybeNull!default運營商。那麼你不需要這個功能。