Caso eu tenha que gerar uma lista de inputs de perguntas e precise saber quais os ids desses inputs, como seria a geração de ids dentro de um ui:repeat ? Segue a baixo o exemplo com input HTML e componente de input JSF.
Input HTML
<ui:repeat value="#{perguntaController.perguntas}" var="pergunta" varStatus="status"> <h:outputLabel value="#{pergunta.descricao}" /> <input id="pergunta#{status.index}"/> </ui:repeat>
A tag input de se comporta da mesma forma dentro de um xhtml, então o id definido no atributo será o id da tag. Então para que possa definir id dentro de ui:repeat é possível usar o atributo varStatus que possibilita a propriedade index(status.index), a qual é a posição do objeto na lista.
Componente input JSF
<ui:repeat id="lista" value="#{perguntaController.perguntas}" var="pergunta"> <h:outputLabel value="#{pergunta.descricao}" /> <h:inputText id="pergunta"/> </ui:repeat>
A partir do JSF 2 os atributos recebem seu nome “completo” no id, que seria o form + componente(o ui:repeat) + a posicao na repetição + o nome definido no id do input, todos concatenados por :