我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值.如果提供了userName变量,我想有条件地包含模板的一部分,如:
[#if_exists userName] Hi ${userName}, How are you? [/#if_exists]
但是,FreeMarker手册似乎表明if_exists已被弃用,但我找不到另一种方法来实现这一点.当然,我可以简单地提供一个额外的布尔变量isUserName并使用如下:
[#if isUserName] Hi ${userName}, How are you? [/#if]
但是如果有一种检查userName是否存在的方法,那么我可以避免添加这个额外的变量.
要检查值是否存在:
[#if userName??] Hi ${userName}, How are you? [/#if]
或者使用标准的freemarker语法:
<#if userName??> Hi ${userName}, How are you? #if>
要检查值是否存在且不为空:
<#if userName?has_content> Hi ${userName}, How are you? #if>
这个似乎更合适:
<#if userName?has_content> ... do something #if>
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
另外我认为if_exists的使用方式如下:
Hi ${userName?if_exists}, How are you?
如果userName为null,则不会中断,如果为null,则结果为:
Hi , How are you?
if_exists现已弃用,已被默认运算符替换!如在
Hi ${userName!}, How are you?
默认运算符也支持默认值,例如:
Hi ${userName!"John Doe"}, How are you?