Вы не можете объединять строки в выражениях 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']}" />