Dón*_*nal 166 java templates freemarker
我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值.如果提供了userName变量,我想有条件地包含模板的一部分,如:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
Run Code Online (Sandbox Code Playgroud)
但是,FreeMarker手册似乎表明if_exists已被弃用,但我找不到另一种方法来实现这一点.当然,我可以简单地提供一个额外的布尔变量isUserName并使用如下:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Run Code Online (Sandbox Code Playgroud)
但是如果有一种检查userName是否存在的方法,那么我可以避免添加这个额外的变量.
Ulf*_*ack 280
要检查值是否存在:
[#if userName??]
Hi ${userName}, How are you?
[/#if]
Run Code Online (Sandbox Code Playgroud)
或者使用标准的freemarker语法:
<#if userName??>
Hi ${userName}, How are you?
</#if>
Run Code Online (Sandbox Code Playgroud)
要检查值是否存在且不为空:
<#if userName?has_content>
Hi ${userName}, How are you?
</#if>
Run Code Online (Sandbox Code Playgroud)
use*_*081 93
这个似乎更合适:
<#if userName?has_content>
... do something
</#if>
Run Code Online (Sandbox Code Playgroud)
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
Ulf*_*ack 63
另外我认为if_exists的使用方式如下:
Hi ${userName?if_exists}, How are you?
Run Code Online (Sandbox Code Playgroud)
如果userName为null,则不会中断,如果为null,则结果为:
Hi , How are you?
Run Code Online (Sandbox Code Playgroud)
if_exists现已弃用,已被默认运算符替换!如在
Hi ${userName!}, How are you?
Run Code Online (Sandbox Code Playgroud)
默认运算符也支持默认值,例如:
Hi ${userName!"John Doe"}, How are you?
Run Code Online (Sandbox Code Playgroud)
我认为很多人都希望能够检查他们的变量是否不为空以及是否存在。我认为在很多情况下检查存在和空性是一个好主意,并且可以使您的模板更健壮,更不容易出现愚蠢的错误。换句话说,如果您在使用之前检查以确保您的变量不为 null 且不为空,那么您的模板将变得更加灵活,因为您可以将一个 null 变量或一个空字符串放入其中,并且它的工作方式相同在任一情况下。
<#if p?? && p?has_content>1</#if>
Run Code Online (Sandbox Code Playgroud)
假设您想确保这p不仅仅是空格。然后你可以在检查之前修剪它,看看它是否has_content。
<#if p?? && p?trim?has_content>1</#if>
Run Code Online (Sandbox Code Playgroud)
更新
请忽略我的建议——has_content这就是所需要的,因为它会与空检查一起进行空检查。Doingp?? && p?has_content相当于p?has_content,所以你不妨直接使用has_content.
| 归档时间: |
|
| 查看次数: |
219735 次 |
| 最近记录: |