在Freemarker中处理空值

时间:2012-12-19 10:29:45

标签: freemarker

如何处理Freemarker中的null值?当数据中存在null值时,模板中会出现一些例外情况。

6 个答案:

答案 0 :(得分:77)

您可以使用??测试运算符:

检查对象的属性是否为null:

<#if object.attribute??></#if>

检查对象或属性是否为空:

<#if (object.attribute)??></#if>

来源:FreeMarker Manual

答案 1 :(得分:71)

从freemarker 2.3.7开始,您可以使用this syntax

${(object.attribute)!}

或者,如果要在属性为null时显示默认文本:

${(object.attribute)!"default text"}

答案 2 :(得分:2)

我认为它的另一种方式

<#if object.attribute??>
   Do whatever you want....
</#if>

如果object.attribute为非NULL,则会打印内容。

答案 3 :(得分:0)

??声明的末尾使用 <#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>

答案 4 :(得分:0)

如果您有问题,我想添加更多上下文,这是我尝试过的。

img

这更像是 Javascript IF 和 ELSE 概念,我们想通过所需的逻辑检查这个值或另一个链接。

Freemarker webite

Other reference:

场景:客户的 ID 和名称组合在一起,例如 13242 Harish,所以我们的利益相关者需要唯一的名称,所以我尝试了这个 ${record.entity?keep_after(" ") } 并且它确实有效,但是,它只能在您有空间时才能工作,但是当客户没有空间和一个名称时,我不得不执行一些 IF ELSE 条件来检查 Null 值。

答案 5 :(得分:-3)

如果有很多要转换为可选变量的变量,则可以将SubimeText与此配合使用:

Find: \${([A-Za-z_0-9]*)}
Replace: \$\{${1}!\}

确保启用了正则表达式和区分大小写的选项:

Sublime regex replace