我使用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()
调用非空值。
答案 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;
}
}
}