【发布时间】:2012-12-06 16:21:22
【问题描述】:
如何处理 Freemarker 中的null 值?当数据中存在null 值时,我在模板中遇到了一些异常。
【问题讨论】:
标签: freemarker
如何处理 Freemarker 中的null 值?当数据中存在null 值时,我在模板中遇到了一些异常。
【问题讨论】:
标签: freemarker
从freemarker 2.3.7开始,你可以使用this syntax:
${(object.attribute)!}
或者,如果您想在属性为 null 时显示默认文本:
${(object.attribute)!"default text"}
【讨论】:
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency> 后,这是有效的。
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
您可以使用?? 测试运算符:
这会检查对象的属性是否不为空:
<#if object.attribute??></#if>
这会检查对象或属性是否不为空:
<#if (object.attribute)??></#if>
【讨论】:
has_content,在空值检查旁边,还会检查值是否不为空。这适用于字符串、序列、散列或集合。如果对象是日期、布尔值或数字,则它充当非空对象。对于所有其他类型,它将充当空。
我认为它是另一种方式
<#if object.attribute??>
Do whatever you want....
</#if>
如果object.attribute 不为空,则打印内容。
【讨论】:
在 <#if> 语句的末尾使用 ?? 运算符。
此示例演示如何处理 Freemaker 模板中两个列表的 null 值。
List of cars:
<#if cars??>
<#list cars as car>${car.owner};</#list>
</#if>
List of motocycles:
<#if motocycles??>
<#list motocycles as motocycle>${motocycle.owner};</#list>
</#if>
【讨论】:
如果您有问题,我想添加更多上下文,这是我尝试过的。
<#if Recipient.account_type?has_content>
… (executes if variable exists)
<#else>
… (executes if variable does not exist)
</#if>
这更像是 Javascript 的 IF 和 ELSE 概念,我们要检查该值是否通过所需的逻辑链接。
场景:客户的 ID 和姓名结合起来像 13242 Harish,所以我们的利益相关者需要唯一的姓名,所以我尝试了这个 ${record.entity?keep_after(" ") } 它确实有效,但是,它只能在您有空间时工作,但是当客户没有空间和一个名字时,我必须做一些 IF ELSE 条件来检查 Null 值。
【讨论】: