Prezados,
Preciso implementar um formulário dinâmico. Vou tentar explicar bem detalhadamente…
Tenho uma tabela com uma lista de temas:
<p:dataTable id="tabela_temas" var="tema" ...
O usuário pode selecionar um tema desta tabela. Após selecionar um tema, devo ir no banco de dados e recuperar todas as perguntas associadas a este tema:
public List<Pergunta> getPerguntas() {
if (this.temaSelecionado != null) {
PerguntaRN perguntaRN = new PerguntaRN();
this.perguntas = perguntaRN.buscarPorTema(temaSelecionado.getId());
...
Agora que começa a parte boa :twisted:. Para cada pergunta, deverá ser fornecida uma resposta. O tipo de pergunta (texto simples, multipla escolha, etc…) define o tipo de campo da resposta. Ou seja, para determinadas perguntas terei um campo de resposta do tipo inputText, para outras terei um campo do tipo selectOneRadio, e por aí vai…
Como teste tentei fazer o seguinte. Na entidade pergunta, criei um atributo transient do tipo String que deverá conter o htmldo campo de resposta. Então alterei o método getPerguntas ficando assim:
public List<Pergunta> getPerguntas() {
if (this.subtemaSelecionado != null) {
PerguntaRN perguntaRN = new PerguntaRN();
this.perguntas = perguntaRN.buscarPorSubtema(subtemaSelecionado.getId());
// Verifica o tipo de pergunta, para definir qual será o tipo de compo de resposta
for (Pergunta pergunta : this.perguntas) {
//if (pergunta.getTipoPergunta().equals("")) {
pergunta.setHtmlCampoResposta("<h:outputText />");
//}
}
}
return perguntas;
}
E no XHTML fiz:
<h:panelGrid columns="2" cellpadding="2">
<ui:repeat var="pergunta" value="#{temaBean.perguntas}">
<h:outputText value="#{pergunta.descricaoPergunta}" style="font-weight: bold;" />
<br />
#{pergunta.htmlCampoResposta}
<br /><br />
</ui:repeat>
</h:panelGrid>
Só que infelizmente não funcionou. É impresso o valor da String… e o campo não é renderizado…
Poderiam me ajudar?


