处理spring表达式语言中的空值

时间:2012-07-23 08:58:14

标签: java spring spring-el

我使用spring表达式语言有以下代码:

StandardEvaluationContext stdContext = new StandardEvaluationContext();
stdContext.setVariable("emp", filterInputData); 
ExpressionParser parser = new SpelExpressionParser();     
parser.parseExpression("#emp.?[name.toLowerCase().contains('Hari')]").getValue(stdContext);

其中 \ temp 是bean的名称。这里的名称可以为null,当调用name.toLowerCase()时,我得到一个nullpointer异常。如何处理此方案中的空值?我只需要为toLowercase()调用非空值。

2 个答案:

答案 0 :(得分:21)

"#emp.name != null ? #emp.name.toLowerCase().contains('hari') : null"

"#emp.name != null ? #emp.name.toLowerCase().contains('hari') : false"

取决于您缺少姓名时想要回复的内容。

实际上,这种简短形式也有效......

"#emp.name != null ? toLowerCase().contains('hari') : null"
顺便提一下,原来的问题......

name.toLowerCase().contains('Hari')

永远不会返回true(H是大写)。

或者,猫王是你的朋友......

Expression expression = new SpelExpressionParser().parseExpression("#emp.name?:'no name found'");
value = expression.getValue(context, String.class).toLowerCase();

答案 1 :(得分:0)

你可以将这个bean自动装配到你的班级吗?

类似的东西:

public class YourClass{ 
    @Autowire
    private Employee emp

    public boolean func(){
        if (emp.getName() != null){
            return emp.getName().toLowerCase().contains('Hari');
        }else{
            return false;
        }
    }
}