Senhores,
estou com um problema numa tela de um sistema feito utilizando Java Server Faces 2.0, onde esta possui um grupo de Combo Boxes aninhadas, a implementação da mesma está da seguinte forma:
No meu projeto eu possuo o cadastro de:
Contrato
Sistema
Projeto
Tela
Um Contrato possui uma lista de Sistemas;
Um Sistemas uma lista de Projeto;
Um Projeto uma lista de Telas;
Dessa forma, na tela de cadastro de Sistemas haverá um Combo Box com uma lista de Contratos, para o usuário escolher um deles.
Na tela de cadastro de Projetos preciso colocar um Combo Box com uma lista de Contratos e outra com uma lista de Sistemas, que inicialmente virá vazia, e, quando o usuário selecionar um Contrato o sistema atualizará a lista de Sistemas com todos os registros relacionados a este contrato.
Na tela de cadastro de Telas tenho uma situação parecida, só que com um Combo Box a mais, o de Projetos, onde os Combo Boxes de Contrato e Sistema funcionarão da mesma forma, e o Combo Box de Projeto será atualizado com a lista de Projetos do Sistema escolhido.
Para construir a tela estou usando as tags ‘h:selectOneMenu’ para os Combo Boxes, o ‘f:selectItems’ para listar o conteúdo dos Combo Boxes, e a ‘f:ajax’, para atualizar os Combo Boxes filhos, que é onde estou tendo problemas. Para fazer isso funcionar eu preciso submeter o componente Pai, para que o meu Controller (Bean) possa usar-lo como filtro para atualizar a lista do filho. A renderização do filho está funcionando, mas eu não estou conseguindo fazer com que o Pai seja submetido.
Segue um trecho do código como exemplo:
<h:outputLabel value="#{bundle.CreateProjetoLabel_contrato}" for=“contrato” />
<h:selectOneMenu id=“contrato” value="#{sistemaController.sistema.contrato}" title="#{bundle.CreateProjetoTitle_contrato}" required=“true” requiredMessage="#{bundle.CreateProjetoRequiredMessage_contrato}">
<f:ajax execute=“formulario:contrato” render=“formulario:sistema”/>
<f:selectItems value="#{contratoController.itensSelecaoUnica}" var=“itemContrato” itemValue="#{itemContrato.codigo}" itemLabel="#{itemContrato.nome}"/>
</h:selectOneMenu>
<h:outputLabel value="#{bundle.CreateProjetoLabel_sistema}" for=“sistema” />
<h:selectOneMenu id=“sistema” value="#{projetoController.projeto.sistema}" title="#{bundle.CreateProjetoTitle_sistema}" required=“true” requiredMessage="#{bundle.CreateProjetoRequiredMessage_sistema}">
<f:selectItems value="#{sistemaController.sistemasContrato}" var=“itemSistema” itemValue="#{itemSistema.codigo}" itemLabel="#{itemSistema.nome}"/>
</h:selectOneMenu>
O nome do formulário é ‘formulario’. Já não sei mais o que alterar ou testar, preciso de alguma ajuda com urgência…
Obrigado.