Freemarker函数,参数可以为空

Ula*_*kar 7 java freemarker

我在Freemarker中创建了函数:

<#function formatDate anyDate>
    <#assign dateFormat = read_from_configuration() />
    <#if anyDate??>
        <#return anyDate?date(dateFormat) />
    <#else >
        <#return '' />
    </#if>
</#function>

我称之为:${formatDate(object.someDate)}.

一切正常,直到someDate为空.在那种情况下,我得到例外:

Error executing macro: formatDate
required parameter: anyDate is not specified.

我怎样才能做到这一点?如果参数值为null,我希望函数能够工作.

Sco*_*pey 12

这就是我所做的,这似乎适用于大多数场景:

默认值应为空字符串,null检查应为?has_content.

<#function someFunction optionalParam="" >
    <#if (optionalParam?has_content)>
        <#-- NOT NULL -->
    <#else>
        <#-- NULL -->
    </#if>
</#function>
Run Code Online (Sandbox Code Playgroud)


Ula*_*kar 6

最后,我这样做是这样的:

<#function formatDate anyDate ='notSet'>
    <#assign dateFormat = read_from_configuration()/>
    <#if anyDate?is_date>
        <#return anyDate?string(dateFormat)/>
    <#else>
        <#return''/>
    </#if>
</#function>