вложение el выражений в JSF для API ресурса - PullRequest
14 голосов
/ 02 ноября 2011
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/>

Я хотел бы сначала вычислить внутренний el, а затем вычислить путь с помощью API ресурса. Я пробовал тег <c:set>, но его переменная также является EL, поэтому он не имеет значения.

1 Ответ

23 голосов
/ 02 ноября 2011

В текущей версии EL 2.2 вы не можете таким образом вкладывать EL-выражения или String-concatenate EL-переменные.Используйте <c:set>, чтобы подготовить динамический ключ перед использованием его в другом выражении EL, просто вставив выражение EL в строку:

<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" />
<p:graphicImage value="#{resource[resourceName]}"/>

Альтернативой является просто использование library иАтрибуты name вместо создания URL-адреса на основе этих атрибутов с помощью сопоставления #{resource}:

<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" />

Обновление : начиная с EL 3.0, вы можете использовать оператор +=для конкатенации строк в EL, если по какой-то причине вы действительно не можете использовать library/name.

<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/>
...