Java 在spring表达式语言中处理空值
我使用spring表达式语言编写了以下代码:Java 在spring表达式语言中处理空值,java,spring,spring-el,Java,Spring,Spring El,我使用spring表达式语言编写了以下代码: StandardEvaluationContext stdContext = new StandardEvaluationContext(); stdContext.setVariable("emp", filterInputData); ExpressionParser parser = new SpelExpressionParser(); parser.parseExpression("#emp.?[name.toLowerCase
StandardEvaluationContext stdContext = new StandardEvaluationContext();
stdContext.setVariable("emp", filterInputData);
ExpressionParser parser = new SpelExpressionParser();
parser.parseExpression("#emp.?[name.toLowerCase().contains('Hari')]").getValue(stdContext);
其中emp是bean的名称。在这里,名称可以为null,当调用
name.toLowerCase()
时,我得到一个null指针异常。在这种情况下如何处理空值?我需要调用toLowercase()
仅用于非空值。您能将这个bean自动关联到您的类吗
比如:
public class YourClass{
@Autowire
private Employee emp
public boolean func(){
if (emp.getName() != null){
return emp.getName().toLowerCase().contains('Hari');
}else{
return 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();
嗨,非常感谢你的回答。在我的例子中,employee是对象的集合。所以我需要从集合中获取名称。我尝试使用“#emp.?[name!=null?toLowerCase().contains('hari'):null]”,但它不起作用,我收到一条消息,说EmployeeDto中不存在toLowerCase方法,请您帮助我解决此问题。许多人不知道你为什么要尝试使用集合选择。如果你的收藏是一张地图,这很好用。。。“#emp['name']!=null?#emp['name'].toLowerCase().contains('hari'):false”成功了,非常感谢您的支持并帮助我找到了一个解决方案感觉像
name?。toLowerCase()
也应该有帮助toLowerCase()。contains('hari')
总是false
name.toLowerCase().contains('Hari')
Expression expression = new SpelExpressionParser().parseExpression("#emp.name?:'no name found'");
value = expression.getValue(context, String.class).toLowerCase();