在布尔表达式中计算null varible

时间:2015-09-16 15:33:59

标签: spring-el

当我尝试评估布尔表达式,其中包含具有空值的变量评估未定义的变量时,解析器不能用作我预料到,它不会失败,而是假设空变量(或未定义的变量)为大负数(我猜......)。

这里我编写的Test类显示了这个:

public class SpELTest {

    @Test(expected = Exception.class)
    public void evaluateNullVariable() {
        ExpressionParser parser = new SpelExpressionParser();

        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setVariable("PERFORMANCE", null);

        Boolean result = (Boolean)parser.parseExpression("#PERFORMANCE < 100").getValue(context);

        assertTrue(result); // no expected result
    }

    @Test(expected = Exception.class)
    public void evaluateUndefinedVariable() {
        ExpressionParser parser = new SpelExpressionParser();

        Boolean result = (Boolean)parser.parseExpression("#UNDEFINED < 100").getValue();

        assertTrue(result); // no expected result
    }
}

对这种行为的任何想法或如何避免它?

1 个答案:

答案 0 :(得分:1)

"#PERFORMANCE == null ? false : #PERFORMANCE < 100"