Контроль сгенерированного идентификатора пользовательского интерфейса: повторить

Извините за простой вопрос. Я учусь использовать JSF 2.2 для создания формы и стараюсь максимально приблизить ее к обычному HTML5. У меня есть UI: повторить сгенерированный список, который выглядит так:

<ul id="nameLst">
    <ui:repeat var="d" value="#{controller.names}" varStatus="status">
        <li>
            <input
                jsf:id="nameTxt"
                jsf:binding="#{nameTxt}"
                jsf:value="#{d}"
                type="hidden" />#{d}
        </li>
    </ui:repeat>
</ul>

Это делается так:

<ul id="nameLst">
    <li>
        <input id="j_idt14:0:nameTxt" name="j_idt14:0:nameTxt" value="Name1" type="hidden">
        Name1
    </li>
    <li>
        <input id="j_idt14:1:nameTxt" name="j_idt14:1:nameTxt" value="Name2" type="hidden">
        Name2
    </li>
</ul>

Теперь я пытаюсь добавить имена, используя JavaScript, только в этот список. Проблема в том, как я могу контролировать этот сгенерированный идентификатор, чтобы я мог использовать его в JavaScript. И главным образом, если список начинается пустым, как мне сгенерировать этот идентификатор, чтобы он мог быть корректно отправлен обратно в управляемый компонент.

1 ответ

Как я могу контролировать этот сгенерированный идентификатор, чтобы я мог использовать его в JavaScript

Просто дайте ему исправить id,

<ui:repeat id="names" ...>

В качестве альтернативы используйте jsfc атрибут для поворота <ul> в <ui:repeat>,

<ul id="names" jsfc="ui:repeat" value="#{bean.names}" var="name">
    <li>
        <input jsf:id="name" type="hidden" value="#{name}" />
    </li>
</ul>

И главным образом, если список начинается пустым, как мне сгенерировать этот идентификатор, чтобы он мог быть корректно отправлен обратно в управляемый бин

Используйте JSF для этого вместо JS. Пример можно найти здесь: Как динамически добавлять компоненты JSF

Смотрите также:

Другие вопросы по тегам