Tenho uma situação que tenho uma lista de motoristas para ser selecionado.
Porém, caso seja selecionado e em outro <p:selectOneMenu não tenha sido selecionado nada ainda, isso é verificado no Bean, ele deverá retornar para “nada selecionado”, não estou conseguindo:
Pela sua descrição eu entendi que existem 2 componentes selectOneMenu, correto? Tente descrever melhor o que deve acontecer nas interações entre eles, e o que está dando errado no seu caso.
Mas eu fiz isso o problema é que na tela ele não atualiza o componente.
No meu bean nesse momento está assim (sem resolver):
[code] public void motoristaChangeListener(ValueChangeEvent event) {
boolean remetDestOk = this.ctrc.getRemetente().getId() != null && this.ctrc.getDestinatario().getId() != null;
if (remetDestOk) {
…
} else {
// essa linha já coloca o valor que na tela deveria atualizar para a
// primeira posição da lista
this.ctrc.setMotorista(new Motorista());
this.ctrc.setVeiculo(new Veiculo());
RequestContext.getCurrentInstance().execute("removerBtnImportarNota();");
// aviso para escolher remetente e destinatário
Util.addError("Aviso", Util.getMessageBundle("label.cte.msg.erro.remetente.dest"));
}
}
Na verdade não, o seu Selecione está definido assim:<f:selectItem itemLabel="Selecione" itemValue="" />o que não é igual a uma instância nova de Motorista, o ideal nesse caso seria você definí-lo assim: <f:selectItem itemLabel="Selecione" itemValue="null" />e quando receber esse false setar o motorista para null
if (motorista.getVeiculos().size() > 0) {
Veiculo veiculo = motorista.getVeiculos().get(0);
this.ctrc.setVeiculo(veiculo);
}
} else {
// Deselecionou o motorista
}
} else {
// essa linha já coloca o valor que na tela deveria atualizar para a
// primeira posição da lista
this.ctrc.setMotorista(null); // SETANDO para null - NÃO resolveu
this.ctrc.setVeiculo(new Veiculo());
RequestContext.getCurrentInstance().execute("removerBtnImportarNota();");
// aviso para escolher remetente e destinatário
Util.addError("Aviso", Util.getMessageBundle("label.cte.msg.erro.remetente.dest"));
}
}[/code]