O que acontece é que o JSF já renderizou o h:messages quando chega na combo ( já esta na fase Render Response ) ai entao ele chama meu método e o método lanca a mensagem na tela. Como ele já carregou o h:messages a mensagem nao aparece.
Pelo que vejo, você escreveu em seu managed bean um método chamado getEstados(), e é dentro dele que você adiciona a mensagem caso algo dê errado não é?
Nesse caso, você tem que mover essa lógica para outro local. O ideal é que, quando a fase Render Response for executada pelo JSF, a lista de estados já tenha sido carregada, ou a mensagem já tenha sido lançada.
daviddjp
É isso mesmo cara… agora como eu vou popular a combo em um momento diferente ?
E no caso da mensagem é dificil mexer tambem porque eu lanço a mensagem dentro de um bloco catch.
tnaires
Você pode escrever um método no managed bean que será executado antes da página ser renderizada. Esse método será executado na fase Invoke Application.
Esse método executa o web service e armazena os dados em uma lista, declarada como variável de instância no managed bean. O seu getter retornará essa lista simplesmente.
Caso haja algum erro a mensagem pode ser lançada nesse mesmo método também.
daviddjp
Entendi. Acho que assim vai funcionar mesmo!
Voei! heheh… vou testar
daviddjp
É cara…funcionou.
Coloquei num método init, que é chamado pelo menu para carregar a lista da combo.
O problema é que são 3 combos, e uma depende da outra.
Uf, municipio e bairro. Para uf ta beleza…
Só que como as outras só aparecem dependendo da primeira, complicou um pouco.
Pensando em alguma solução aqui.
tnaires
Agora você precisa escrever dois value change listeners:
um que será executado quando o estado for selecionado, e será responsável por carregar a lista de municípios;
outro que será executado quando o município for selecionado, e será responsável por carregar a lista de bairros.
daviddjp
Cara blza… funcionou bacana! percebi que ele vai na valueChange antes de atualizar o modelo… ficou massa.
Parou de funcionar o caso de uso auiehauieha, mas isso tá funcionando.
Muito código sinistro aqui, to mudando quase tudo.