Pessoal, olhe o que eu estou tentando fazer e meus problemas:
Tenho uma página (escopo request) onde há um selectOneMenu que lista várias entidades Message (fiz o Conversor).
Ao usuário clicar em uma delas, é apresentado os detalhes dessa Message , para que ele edite (Selects, Checkbox, e uma textarea).
Acontece que ao usuário selecionar a Message e carregar os detalhes na tela, ao fazer uma alteração e salvar, não acontece nada, pois o objeto Message é nulo.
Daí alguem pode falar , claro, é porque a pagina ta no escopo request.
Eu coloquei aquele componente t:saveState pra salvar o objeto Message. Aí que ta o problema:
quando eu mudo o Message, ele salva o primeiro Message que eu escolhi e fica com ele até o fim
(o saveState faz isso). Não tem uma forma de ele “trancar” esses dados até eu mudar o valor do Select Somente (para que eu aproveite os dados no submit, mas não fique com os mesmos dados pra sempre) ?
Do jeito que ta eu mudo o select e ele persiste os dados do 1º Message pra sempre na arvore de componentes!!!
ps: Estou usando facelets, mas isso não tem nada a ver
gilliard_santos
Olá, eu também tive o mesmo problema e consegui resolver da seguinte forma…
coloque seu componente como immediate=“true” e no seu metodo updateForm (que é o valueChangeListener) force “resetar” os componentes que voce quer atualizar ao mudar o valor do combo.
Seguem algns metodo auxiliares para voce resetar os valores da arvore de componentes:
Com esses metodos voce poe tanto resetar a arvore inteira quanto apenas a arvore a partir de um componente passando o mesmo ou o clientId dele.
Nos fóruns pela net existem outras solucoes para esse problema, mas essa me pareceu simples e transparente quanto ao que esta sendo feito.
Espero que resolva pra voce também.
>