2013-06-10 4 views
2

Мой вопрос похож на this question. Поскольку этот вопрос довольно старый, так думали о публикации нового вопроса.Тернарный оператор весной

Я также пишу свое выражение в следующем

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

Когда я получить значение «в» переменный из моего компонента. Это дало мне что-то вроде ниже

01='01'? value1 : value2 

Не разбирался в моем выражении в самом XML.

Я делаю что-то не так здесь?

ответ

8

Вы слишком рано заканчиваете SpEL; она должна быть ...

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

Обратите внимание, что вы также должны одинарные кавычки заполнителей так разрешенные значения обрабатываются как литералы.

+0

Я тоже пробовал это, но получаю что-то вроде «EL1043E: (pos 62): Неожиданный токен. Ожидаемый« двоеточие (:) », но был« bean_ref (@) »« – Jaikrat

+1

Попробуйте добавить одинарные кавычки вокруг '$ {.. .} 'properties -' '$ {PROPERTY_VALUE_1_FROM_BUNDLE}' '. –

+0

Спасибо @Gary, его работа. Итак, не могли бы вы обновить свой первый ответ, чтобы я мог отметить его как «Принятый» :) – Jaikrat

0

я решил его с помощью кода ниже

ExpressionParser parser = new SpelExpressionParser(); 
String toMail = parser.parseExpression(to).getValue(String.class); 

бы сделать немного здесь и там в XML, но его в ответ, как я хотел. Теперь я получаю либо значение в моей переменной «to».

Смежные вопросы