Alterar estrutura do formulário JSF com ajax, sem perder os dados já digitados

Olá pessoal.

Eu tenho uma dúvida em relação a estrutura de formulário em JSF. Eu gostaria, se possível de alterá-lo em execução através de um outro componente, por exemplo:

Tenho um SelectOneRadio com 2 possíveis opções, e dependendo da seleção eu gostaria de mudar os campos existentes no formulário sem perder os que já haviam sido digitados. Eu implementei exatamente o que falei contudo eu devo utilizar o <f:ajax /> para atualizar o formulário e isso faz com que eu perca tudo já digitado, portanto gostaria de saber se existe algum meio que eu pudesse persistir estes dados após o update.

Caso já exista um tópico sobre este assunto por favor me desculpem, mas eu não fui capaz de encontrá-lo.

Obrigado a Todos.

JSF Exemplos Simples com Ajax

Deixa eu ver se entendi

Conforme a seleção em um comboBox
vc quer mudar a estrutura da pagina, certo
sem perder o que já foi digitado

pra fazer isso vc precisa atualizar apenas o componente que vc quer q apareça

é so inserir isso no seu SelectOneRadio

ex: <p:ajax event=“change”
listener="#{seuBean.apareceCampo}"
update=“campoA” />

[quote=tmvolpato]Deixa eu ver se entendi

Conforme a seleção em um comboBox
vc quer mudar a estrutura da pagina, certo
sem perder o que já foi digitado

pra fazer isso vc precisa atualizar apenas o componente que vc quer q apareça

é so inserir isso no seu SelectOneRadio

ex: <p:ajax event=“change”
listener="#{seuBean.apareceCampo}"
update=“campoA” />[/quote]uai, ele está utilizando primefaces?

não sei kkk

chutei

[quote=tmvolpato]não sei kkk

chutei

[/quote]aaa tá. ^^

haha estou usando sim primefaces, bom chute. Mas já tentei com ambos e enfrento o mesmo problema. Vou explicar um pouco melhor.

Eu tenho o seguinte:

Um formulário com uma <p:panelGrid> e dentro dele n outros elementos. Mas o que quero é que quando for alterado o SelectOneRadio uma linha inteira apareça e outra desapareça do formulário através do “rendered”, já tentei colocar um id na linha que queria que desaparecesse e dar update somente nesta linha, mas nada acontece. Mas se eu coloco toda a grid como update dá certo, mas perco tudo que já havia sido digitado.

Então queria saber se tem alguma maneira que independente de quantas vezes esse radio seja mudado, ele mantenha os valores nos outros campos.

[quote=Rakde]haha estou usando sim primefaces, bom chute. Mas já tentei com ambos e enfrento o mesmo problema. Vou explicar um pouco melhor.

Eu tenho o seguinte:

Um formulário com uma <p:panelGrid> e dentro dele n outros elementos. Mas o que quero é que quando for alterado o SelectOneRadio uma linha inteira apareça e outra desapareça do formulário através do “rendered”, já tentei colocar um id na linha que queria que desaparecesse e dar update somente nesta linha, mas nada acontece. Mas se eu coloco toda a grid como update dá certo, mas perco tudo que já havia sido digitado.

Então queria saber se tem alguma maneira que independente de quantas vezes esse radio seja mudado, ele mantenha os valores nos outros campos.

[/quote]Leia o conteúdo do link que postei.

Sou novo em ambiente web. E me desculpe Hebert eu já li o link que me enviou 2 vezes, mas não fui capaz de identificar exatamente aonde você explica o que eu gostaria de saber. Portanto se não for incômodo você poderia me dizer aonde encontrá-lo? Eu já usei f:ajax para fazer o clássico combo aninhado de Cidade e Estado sem problema algum, pois eu atualizava só o componente alvo(cidade), mas meu problema é que eu tenho que atualizar toda Grid para poder fazer uma linha aparecer e outra desaparecer. Consequentemente perco os valores de todos os campos da mesma.

Vi o que falou sobre o (DOM Tree) e é exatamente este o meu problema. mas não achei como solucioná-lo.

Obrigado.

Depois de fazer vários testes que falharam por vários motivos, eu consegui fazer o que eu queria, mas é meio gambiarra mas resolve o problema se eu algum dia conseguir solucionar este problema de uma forma melhor irei postar aqui.

Solução adotada:

<p:selectOneRadio id="sorMoradia" value="#{clienteBean.cliente.moradia}" valueChangeListener="#{clienteBean.putMoradiaValue()}" onchange="submit()" >,

com o rendered dinâmico na linha desejada para desaparecer através do valor moradia vindo do bean:

<p:row id="row" rendered="#{clienteBean.catchMoradiaValue() == 0}">

O JS “submit()” para que os valores sejam setados no bean e recoperados(acredito).

Desta forma todo a minha panelGrid foi atualizada e manteve todos os valores em seus campos.

@Hebert Coelho

Tive que desenterrar esse tópico de tanta indignação que senti!
Odeio esses lixos que acham que nunca vão precisar dos outros na vida (e até parece que nunca precisaram antes) e vem em fóruns responder a pergunta dos outros só pra aumentar a quantidade de posts e parecer que são os “senhores generosidade”!!! Mas na verdade não ajudam em porra nenhuma!!!

Se você postou um link pra ajudar o cara, mas não resolveu, custa ajudar DE VERDADE? Você está mais interessado em postar qualquer coisa do que em realmente ajudar!
Se tivesse ficado calado, talvez alguém que realmente pudesse ajudar teria respondido o cara, mas aí você vem aqui e posta qualquer coisa só pra dizer que está ajudando aí outro que poderia ajudar pensa “Não vou postar nada porque já estão ajudando o cara”!

Se não é pra ajudar, então não atrapalha mandando o cara ler exemplos toscos ou apostilas na net! O fórum não existe pra você mandar o cara pesquisar! Óbvio que se ele não conseguiu resolver sozinho, nem com pesquisa é porque precisa de ajuda, não de links pra ele estudar e se virar sozinho!

Deixa de ser enrrolão e para de usar o forum pra divulgar links seus!!! Você postou mais de uma vez mandando o cara ler o link, postou perguntando se ele estava utilizando primefaces, mas quando ele disse que não conseguiu resolver lendo o link você nem se preocupou em responder pra ajudar!!! Vai dormir cara, porque você não está com nada! Os fóruns precisam de colaboradores de verdade, não de parasitas que utilizam para auto divulgação!