Estou desenvolvendo uma página com JSF. Esta página tem 2 panelGrids. No primeiro panel existem dois combobox (selectOneMenu). De acordo com a escolha do usuário no primeiro combobox, um método irá tratar o evento de mudança de valor (valuChangeListener) e preencher o segundo combo. Após a seleção do segundo combo, outro método de tratamento ao evento de mudança de valor irá criar novos compnentes JSF no segundo panelGrid.
O método que recupera o valor do segundo combobox e cria e preenche o panelGrid, eu defini em outra classe para modularizar melhor. Assim meu backing bean só tem apenas o construtor, os dois métodos de tratamento de evento e os getters e setters.
Para melhorar a usabilidade, defini no tratamento de evento do primeiro combo, que ao recuperar a lista e atribuir para os egundo combobox, ele deve recuperar o VALOR do primeiro elemento da lista do segundo vcombobox e também preencher o panelGrid 9evitando assim, mais um clique do usuário).
Até aí tudo bem, tudo funciona perfeitamente. O problema está na “volta”. Digamos que eu selecionei um elemento e que foram adicionado 3 componentes JSF ao 2º panelGrid. Depois, seleciono um outro elemento (tudo isso no 2º combobox) que preencheu o panelGrid com 0 elementos (ou melhor, limpou o panelGrid). Daí quando eu seleciono novamente o elemento que preencheria o panel com 3 elementos (o primeiro elemento selecionado) ele não preenche o panelGrid e o mantém com o estado atual.
Debuggando com System.out.println, eu descobri que o método de adição dos componentes está sendo chamado e tudo, mas o componente não está mudando seu estado. É como se os browsers (testei no firefox e IE) guardassem um estado da página por aquele valor submetido.
Aos dois combobox atribui uma submissão de formulário no evento onChange. Mesmo assim ele não muda o maldito panel
Inclusive, fiz um value-binding com esse panel no meu backing bean.
Alguém pelo menos tem idéia de como resolver?
*Outra coisa muito estranha, ainda debuggando com System.out.println descobri que a cada submissão, o construtor do bean é invocado. Não sei em qual livro eu li que, ele era mantido do lado servidor e seus construtor chamado apenas uma vez. Alguém tb pode esclarecer essa minha dúvida?
FIco grato
Problema com ValueChangeListener e submissão de formulário (resolvido)
Criado 3 de dezembro de 2006
Respostas 0
Participantes 1