Gerando id dinamicamente em JSF

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 :

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s