Prezados,
Na minha view possuo vários componentes gerados DINAMICAMENTE dentro de um ui:repeat. Simplicifacando seria algo mais ou menos assim:
<ui:repeat var="pergunta" value="#{temaBean.perguntas}">
<h:panelGrid columns="1" cellpadding="2">
<h:outputText value="#{pergunta.descricaoPergunta}" style="font-weight: bold;" />
<p:selectOneMenu rendered="#{pergunta.tipoPergunta == 0}" style="width:110px;">
<f:selectItem itemLabel="#{msg.aie_opcao_combo_selecione}" itemValue="" />
<f:selectItem itemLabel="Sim" itemValue="1" />
<f:selectItem itemLabel="Não" itemValue="0" />
</p:selectOneMenu>
<p:inputText rendered="#{pergunta.tipoPergunta == 1}" style="width:720px;" />
<p:selectOneMenu rendered="#{pergunta.tipoPergunta == 2}" style="width:110px;">
<f:selectItem itemLabel="#{msg.aie_opcao_combo_selecione}" itemValue="" />
<f:selectItems value="#{acaoFiscalizatoriaInformacaoComplementarBean.getOpcoesPerguntaSelect(pergunta.id)}" />
</p:selectOneMenu>
<p:selectManyCheckbox rendered="#{pergunta.tipoPergunta == 3}" layout="pageDirection">
<f:selectItems value="#{temaBean.getOpcoesPergunta(pergunta.id)}"
var="opcaoPergunta" itemLabel="#{opcaoPergunta.descricaoOpcao}" itemValue="#{opcaoPergunta}" />
</p:selectManyCheckbox>
<h:outputText value="Observação:" rendered="#{pergunta.flgObs}" />
<p:inputTextarea rendered="#{pergunta.flgObs}" style="width:720px;height:40px;" effectDuration="400" />
<p:separator style="width:720px;" />
</h:panelGrid>
</ui:repeat>
Dependendo do atributo tipoPergunta eu renderizo um tipo de campo diferente. Esse campo refere-se ao campo de resposta da pergunta. Até aí blz, consegui, mas agora preciso gravar os dados no BD e estou meio perdido… Pensei em gerar uns ID´S para cada componente usando a pergunta da iteração do ui:repeat e depois ler o valor dos componentes no MB através do ID. É possível???
Vocês conseguem ver alternativas melhores???
Obrigado