1
6.5.14 The Elvis Operator埃爾維斯運營商春季表達語言(SpEL)
我看到一些在SpEL中使用elvis運算符的trange行爲。如果我不圍繞括號「()」中的elvis表達式,那麼將返回elvis運算符的結果,並忽略表達式的其餘部分。下面展示的行爲示例代碼:
HashMap<String, String> facts = new HashMap<String, String>();
facts.put("flag", "flagvalue");
String expressionString;
Expression expression;
Object expressionResult;
expressionString = "[flag]?:'' matches '(?i)flagvalue'";
expression = new SpelExpressionParser().parseExpression(expressionString);
expressionResult = expression.getValue(facts);
System.out.println("Unexpected Result:" + expressionResult);
expressionString = "([flag]?:'') matches '(?i)flagvalue'";
expression = new SpelExpressionParser().parseExpression(expressionString);
expressionResult = expression.getValue(facts);
System.out.println("Expected Result:" + expressionResult);
輸出:
Unexpected Result:flagvalue
Expected Result:true
奇怪的部份是當值不在HashMap的(即發表意見facts.put線)Elvis操作符似乎工作如預期的那樣,兩個表達式都返回false。
(使用彈簧框架-3.0.5)