目录标题
- 背景
- 为什么呢?
- 验证下empty的含义
- case1
- case2
- case3
- 结论
- 具体解释:
背景
//是否白名单
if(goodInfo.?isWhite != empty){
showList.add(["label": "是否白名单","value":["text":(goodInfo.?isWhite == true ? "是" : "否")] ,"maxLine": 1,"type": 1,"config": ["canCopy":true]]);
}
需要展示一个是否白名单的字段
如果true展示“是”,否则展示“否”
但是实际上false的时候这个字段不展示
表面原因是没有加入到showList里面去
为什么呢?
需要分析一下empty的含义
官网:http://mvel.documentnode.com/
MVEL为测试值的空性提供了一个特殊的文字,巧妙地命名为empty。例如:foo == empty如果foo的值满足空性的任何要求,则示例表达式将为true。
验证下empty的含义
执行脚本如下
System.out.println("goodInfo.?isWhite==empty 结果:" + (goodInfo.?isWhite == empty));
System.out.println("goodInfo.?isWhite!=empty 结果:" + (goodInfo.?isWhite != empty));
System.out.println("goodInfo.?isWhite==null 结果:" + (goodInfo.?isWhite == null));
System.out.println("goodInfo.?isWhite!=null 结果:" + (goodInfo.?isWhite != null));
case1
入参:
{
"goodInfo": {
"isWhite": true
}
}
执行结果:
goodInfo.?isWhite==empty 结果:false
goodInfo.?isWhite!=empty 结果:true
goodInfo.?isWhite==null 结果:false
goodInfo.?isWhite!=null 结果:true
case2
入参:
{
"goodInfo": {
"isWhite": false
}
}
执行结果:
goodInfo.?isWhite赋值false情况
goodInfo.?isWhite==empty 结果:true
goodInfo.?isWhite!=empty 结果:false
goodInfo.?isWhite==null 结果:false
goodInfo.?isWhite!=null 结果:true
case3
入参:
{
"goodInfo": {}
}
执行结果:
goodInfo.?isWhite==empty 结果:true
goodInfo.?isWhite!=empty 结果:false
goodInfo.?isWhite==null 结果:true
goodInfo.?isWhite!=null 结果:false
结论
empty
表示一个空值或未定义的值。- 当
goodInfo.isWhite
为false
或未定义时,goodInfo.?isWhite == empty
为true
。 - 当
goodInfo.isWhite
为true
时,goodInfo.?isWhite == empty
为false
。
具体解释:
goodInfo.?isWhite == empty
:- 当
goodInfo.isWhite
为false
或未定义时,结果为true
。 - 当
goodInfo.isWhite
为true
时,结果为false
。
- 当
goodInfo.?isWhite != empty
:- 当
goodInfo.isWhite
为false
或未定义时,结果为false
。 - 当
goodInfo.isWhite
为true
时,结果为true
。
- 当
goodInfo.?isWhite == null
:- 当
goodInfo.isWhite
未定义时,结果为true
。 - 当
goodInfo.isWhite
为true
或false
时,结果为false
。
- 当
goodInfo.?isWhite != null
:- 当
goodInfo.isWhite
未定义时,结果为false
。 - 当
goodInfo.isWhite
为true
或false
时,结果为true
。
- 当