Java中freemaker判断是否为空表达式的使用方法

2018-10-07 16:19 阅读 307 次 评论 0 条

Java中freemaker判断是否为空表达式的使用方法如下:

测试代码:

@Test
    public void test(){
        try {
            freemakerUtil.fprint(root, "test.ftl",fn+"test.html");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

ftl模版文件:

<#--加个感叹号可以解决为空的问题-->
${(emp.group)!}
<#--加上括号,感叹号解决对象导航为空的问题-->
${(emp.group.name)!"group为空或者name为空"}
<br/>
<#--感叹号还可以解决未定义为空的问题-->
${(a.b)!("a.b未定义")}
<br/>
<#--(a.b)?? 判断a.b是否为空-->
<#if (a.b)??>
    不为空
    <#else>
    为空
</#if>
<br/>
${(a.b)???string}

运行效果:

group为空或者name为空

a,b未定义

为空

false

原文档的解释如下: 

在不是顶层变量时,默认值操作符可以有两种使用方式:

product.color!"red"

如果是这样的写法,那么在 product 中,当 color 不存在时(返回 ”red” )将会

被处理, 但是如果连 produce 都不存在时将不会处理。 也就是说这样写时变量 product
必须存在,否则模板就会报错。

(product.color)!"red"

这时,如果当不存在时也会被处理,那就是说如果 product 不存在或者 product
存在而 color 不存在,都能显示默认值 ”red” 而不会报错。本例和上例写法的重要区别
在于用括号时,就允许其中表达式的任意部分可以未定义。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Java中freemaker判断是否为空表达式的使用方法 | 猿笔记

发表评论


表情