13

私は春の表現言語を使用して次のコードを持っています:

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()とnullpointer例外が発生します。このシナリオでnull値を処理する方法は?toLowercase()null以外の値のみを呼び出す必要があります。

4

2 に答える 2

33
"#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();
于 2012-07-23T12:18:06.190 に答える
-1

このBeanをクラスに自動配線できますか?

何かのようなもの:

public class YourClass{ 
    @Autowire
    private Employee emp

    public boolean func(){
        if (emp.getName() != null){
            return emp.getName().toLowerCase().contains('Hari');
        }else{
            return false;
        }
    }
}
于 2012-07-23T11:47:47.390 に答える