Контроль сгенерированного идентификатора пользовательского интерфейса: повторить
Извините за простой вопрос. Я учусь использовать 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