Aproveitando este Tópico que fala de SelectOneMenu Dependentes, vou tentar explicar meu problema atual.
Consegui fazer com que ao selecionar uma opção no primeiro SelectOneMenu o segundo seja carregado com as informações pertinentes a escolha do primeiro. Quando eu escolho pela primeira vez a opção no primeiro SelectOneMenu, a escolha seguinte não funciona como esperado e assim começa um ciclo de alternâncias de funcionamento e não-funcionamento do elemento.
Veja o vídeo em anexo (Flash), creio que com ele dê para entender bem o problema na prática. Prestem atenção nos valores que aparecem em Contrato e o logo abaixo do botão Cadastrar. O primeiro é setado na primeira linha do método getTodosSistemas e o segundo no final da página, ambos listados abaixo.
Alguem pode me esclarecer o erro que estou cometendo?
Obrigado!
:arrow: Anexos
Código da Página
[code].
.
.
<h:selectOneMenu id=“regional” value="#{ConsumidorBean.idRegional}" onchange=“submit()” immediate=“false”>
<f:selectItems value="#{RegionalBean.todosParaComboBox}" />
</h:selectOneMenu>
<h:selectOneMenu id=“sistema” value="#{ConsumidorBean.consumidor.sistema.id}">
<f:selectItems value="#{ConsumidorBean.todosSistemas}" />
</h:selectOneMenu>
.
.
.
<h:outputText value="#{ConsumidorBean.idRegional}" />[/code]
Código do Bean
[code]public class ConsumidorBean {
private Consumidor consumidor = new Consumidor();
private GerenciadorConsumidor gerenciador;
private int idRegional;
private DataModel model;
private String mensagem;
public ConsumidorBean() throws Exception{
gerenciador = new GerenciadorConsumidor();
consumidor.setCentroCusto(new CentroCusto());
consumidor.setTipoConsumidor(new TipoConsumidor());
consumidor.setSistema(new Sistema());
}
.
.
.
public List getTodosSistemas() throws Exception{
consumidor.setNumContrato(Integer.toString(idRegional));
List sistemasJsf = new ArrayList();
List<Sistema> sistemas = new GerenciadorSistema().retornarSistema(idRegional);
for (Sistema elem : sistemas) {
String id = Integer.toString(elem.getId());
sistemasJsf.add(new SelectItem(id, elem.getDescricao()));
}
return sistemasJsf;
}
.
.
.
}[/code]