如何检查FreeMarker模板中是否存在变量?

2022-08-31 06:23:16

我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值。如果提供了userName变量,我想有条件地包含模板的一部分,如下所示:

[#if_exists userName]
  Hi ${userName}, How are you?
[/#if_exists]

但是,FreeMarker手册似乎表明if_exists已被弃用,但我找不到另一种方法来实现这一目标。当然,我可以简单地提供一个额外的布尔变量 isUserName,并像这样使用它:

[#if isUserName]
  Hi ${userName}, How are you?
[/#if]

但是,如果有一种方法可以检查用户名是否存在,那么我可以避免添加这个额外的变量。


答案 1

要检查该值是否存在,请执行以下操作:

[#if userName??]
   Hi ${userName}, How are you?
[/#if]

或者使用标准的自由标记语法:

<#if userName??>
   Hi ${userName}, How are you?
</#if>

要检查该值是否存在且不为空,请执行以下操作:

<#if userName?has_content>
    Hi ${userName}, How are you?
</#if>

答案 2

这个似乎更适合:

<#if userName?has_content>
... do something
</#if>

http://freemarker.sourceforge.net/docs/ref_builtins_expert.html