2015-09-16 59 views
0

評估空varible當我嘗試評估布爾表達式包含與空值或評價一個未定義的變量一個變量,解析器如我所料不工作,它沒有失敗,而比它,它假定空變量(或未定義的變量)爲大負數(我猜...)。在布爾表達式

這裏我寫的測試類,以顯示這一點:

public class SpELTest { 

    @Test(expected = Exception.class) 
    public void evaluateNullVariable() { 
     ExpressionParser parser = new SpelExpressionParser(); 

     StandardEvaluationContext context = new StandardEvaluationContext(); 
     context.setVariable("PERFORMANCE", null); 

     Boolean result = (Boolean)parser.parseExpression("#PERFORMANCE < 100").getValue(context); 

     assertTrue(result); // no expected result 
    } 

    @Test(expected = Exception.class) 
    public void evaluateUndefinedVariable() { 
     ExpressionParser parser = new SpelExpressionParser(); 

     Boolean result = (Boolean)parser.parseExpression("#UNDEFINED < 100").getValue(); 

     assertTrue(result); // no expected result 
    } 
} 

這種行爲的任何想法或如何避免呢?

回答

0

"#PERFORMANCE == null ? false : #PERFORMANCE < 100"

+0

是它的工作原理,但不是我所需要的,因爲我有這樣的公式來確定的標準衡量的指標,然後對其進行評估,並且這個公式必須是儘可能的簡單,這樣寫知道SpEL什麼的人。 –

+0

我想我會做一些像你這樣的建議,因爲spel會以奇怪的方式處理null值 –