Динамическое присвоение идентификаторов тегам с использованием переменной EL - PullRequest
5 голосов
/ 19 марта 2012

Я хочу перебрать несколько «гостей» и вставить идентификатор dynanimally

<ui:repeat value="#{guestList}" var="guest">
    <p:inputText id="firstname_#{guest.uniqueID}" value="" label="Firstname" />
    <p:message for="firstname_#{guest.uniqueID}" />
</ui:repeat>

Проблема в том, что <p:message /> не может решить firstname_#{guest.uniqueID}

javax.faces.FacesException - Невозможно найти компонент "firstname_1" в представлении. в org.primefaces.component.message.MessageRenderer.encodeEnd (MessageRenderer.java:41)

Это работает без проблем, если я пишу константу внутри цикла, а также я уверен, что переменная может быть разрешена, так как я могу вывести ее в этом цикле.

Как я могу дать команду jsf или простым лицам разрешить эту переменную?

1 Ответ

9 голосов
/ 19 марта 2012

Нельзя использовать выражения EL в атрибуте id.

Но вам не нужно заботиться об уникальности ваших идентификаторов в пользовательском интерфейсе: повторите. JSF делает это для вас. Просто дайте в поле ввода «фиксированный» идентификатор и укажите его в своем p:message:

<ui:repeat value="#{guestList}" var="guest">
    <p:inputText id="firstname" value="" label="Firstname" />
    <p:message for="firstname" />
</ui:repeat>
...