春天的三元运营商

时间:2013-06-10 11:17:20

标签: spring spring-el

我的问题类似于this question。由于这个问题很老,所以想发布新问题。

我也在下面的

中写下我的表达
<property name="to" value="#{ systemProperties['BR']} == '01' ? 
    ${PROPERTY_VALUE_1_FROM_BUNDLE} : 
    ${PROPERTY_VALUE_2_FROM_BUNDLE}" />

当我从我的bean中获取“to”变量的值时。它给了我类似下面的东西

01='01'? value1 : value2

它没有在XML本身中解析我的表达式。

我在这里做错了吗?

2 个答案:

答案 0 :(得分:8)

你太早终止了SpEL;它应该是......

<property name="to" value="#{ systemProperties['BR'] == '01' ? 
    '${PROPERTY_VALUE_1_FROM_BUNDLE}' : 
    '${PROPERTY_VALUE_2_FROM_BUNDLE}' }" />

请注意,您还需要在占位符周围使用单引号,以便将已解析的值视为文字。

答案 1 :(得分:0)

我已使用以下代码

解决了这个问题
ExpressionParser parser = new SpelExpressionParser();
String toMail = parser.parseExpression(to).getValue(String.class);

不得不在XML中做到这一点,但它的响应正如我所希望的那样。现在我在“to”变量中得到了任何一个值。