Pessoal boa noite gostaria de sabe dos amigo se algum de voces ja fizeram um selectOneMenu Dinamico, digo dinamico tudo nao so lista, pq estou passando um dobrado pra fazer isso, talveis a falta de experiencia no JSF esteja dificultando as coisas…
bom vou explicar como eu quero que ele fique e o que eu consegui fazer ate agora…
tenha um tabela chamada classsificacao onde contem as classificacoes dos select ex:
Pais:
Brasil
EUA
Estado:
Rio de Janeiro
California
entao os itens dentro do select são as classificacoes, possuo tb a tabela projetoNivel
que me informa quantos nives (selects) serao gerados
acho que ja deu pra voces entenderem certo?
Eu preciso montar os componetes de acordo com a quantidade de nivel cadastro e pra cada nivel preencher os selects com suas classificações, atualizando cada um com o ajax
entao agora vou mostrar o codigo que estou fazendo pra montar estes select totalmente dinamico
pag Xhtml
<ui:repeat var="vnivel" value="#{projetoController.nivelProjetos}" varStatus="status" >
<h:panelGrid columns="1">
<h:outputLabel value="#{vnivel.descricao}" style="FONT-WEIGHT: bold;"/>
<ui:fragment rendered="#{vnivel.nivel eq 1}">
<p:selectOneMenu value="#{classificacaoController.classificacao.idclassificacao}" >
<f:selectItem itemLabel="---- Escolha ----" />
<f:selectItems value="#{classificacaoController.classificacaoDoProjeto}"
var="classificacao" itemLabel="#{classificacao.nomeClassificacao}"
itemValue="#{classificacao.idclassificacao}" />
<p:ajax update="nivel2" event="change"
listener="#{classificacaoController.montaNivel(3)}">
</p:ajax>
</p:selectOneMenu>
</ui:fragment>
<h:panelGrid id="selects" border="0">
<p:selectOneMenu id="nivel2">
<f:selectItem itemLabel="---- Escolha ---- " />
<f:selectItems value="#{classificacaoController.classificacoes}" var="classificacao"
itemLabel="#{classificacao.nomeClassificacao} "
itemValue="#{classificacao.idclassificacao}">
</f:selectItems>
<p:ajax update="nivel3" event="change" listener="#{classificacaoController.montaNivel(3)}" />
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid id="selects2" border="0">
<p:selectOneMenu id="nivel3">
<f:selectItem itemLabel="---- Escolha ---- " />
<f:selectItems value="#{classificacaoController.classificacoes}" var="classificacao"
itemLabel="#{classificacao.nomeClassificacao} "
itemValue="#{classificacao.idclassificacao}">
</f:selectItems>
<p:ajax update="nivel2" event="change" listener="#{classificacaoController.montaNivel(4)}" />
</p:selectOneMenu>
</h:panelGrid>
</h:panelGrid>
</ui:repeat>
</h:panelGrid>
como voces podem ver estou usuando o ui:repeat e passando uma lista de niveis de projeto
Neste caso ele vai iterar 3 vezes e me trazer os niveis
Pais:
Estado:
Cidade:
na primeira iteracao verifico se o nivel dele é o 1 se for populo este select com as classificacoes do primeiro nivel ate ao blz nao tenho nenhum problema
o que ocorre e no segundo e terceiro select onde e lista como vcs podem ver e a mesma e quando eu chamo o metodo montaNIve(2) (2 para saber de qual nivel esta vindo, neste caso o segundo) e monto o segundo select com as suas classificacoes.
neste cenario o que ocorre é que nao consigo atualizar os debaixo…
pessaol estou nisso a dias sera que alguem poderia me Ajudar com este problema?
obrigado a todos!!
abç