Использование свойства переменной внутри сообщения - PullRequest
2 голосов
/ 21 февраля 2012

Итак, я работаю над приложением, и оно настроено так, чтобы следующая строка

<h:outputText value = "#{msg['properties.help.keys.example.text']}" />

напечатала некоторое выходное значение из файла свойств.Я хочу сделать часть этой строки, которую он использует, чтобы найти переменную свойств.

IE

 <h:outputText value = "#{msg['properties.help.keys.' + cc.attrs.key + '.text']}" />

Где cc.attrs.key - это значение, которое я передаю в xhtml.Возможно ли это, если да, то как ты это делаешь?

1 Ответ

3 голосов
/ 21 февраля 2012

Вы не можете объединять строки в выражениях EL таким образом.+ в EL исключительно оператор сумм для чисел.Вам необходимо использовать <c:set> для объединения строк с выражениями EL, прежде чем вложить их в другое выражение EL.Конкатенация строки тогда выполняется только путем вставки выражения.

<c:set var="key" value="properties.help.keys.#{cc.attrs.key}.text" />
<h:outputText value="#{msg[key]}" />

В следующем EL 3.0 будет новый оператор EL & для конкатенациистроки в выражениях EL.Использование символа & в качестве оператора, однако, вызывает сомнения в технологиях представлений на основе XML, поскольку это зарезервированный символ XML, я обсуждал это с парнями из EL.Это должно быть возможно с альтернативным оператором, таким как ct, который соответствует gt, lt и т. Д.


Обновление : в EL 3.0, есть новый оператор EL += для объединения строк в выражениях EL.Ваш вариант использования может быть решен следующим образом:

<h:outputText value="#{msg['properties.help.keys' += cc.attrs.key += '.text']}" />
...