Problema a4j

Ae pessoal estou com um problema numa combobox, estou utilizando a4j(richfaces), jsf 1.2, etc. Segue abaixo o codigo:

http://pastebin.com/m4e4d6ae3

Dai la no Java eu tenho um método: public boolean verificaStatusAcao();

ele funciona porém eu perco todos os campos que eu já havia preenchido quando eu eu chamo esse método via ajax, o formulario fica em branco

alguém sabe o que é?

só pra lembrar quando eu seleciono um item na combobox ele manda o value da combo pro meu método verificaStatusAcao();

dai o resto eh tranquilo, o unico problema eh que volta zerado o formulario

obs: os outros elementos do formulario não utilizam ajax

agradeço as respostas;

O atributo process no a4j que pode te ajudar.

exemplo:

<a4j:support event="onchange" action="#{lancamentoMedidasBean.verificaStatusAcao}" ajaxSingle="true" process="idComponente1,idComponente2" />

O complicado é que vc tem que colocar todos os seus componentes que estão perdendo o valor no atributo process

Ah! uma pergunta. Seu bean está no escopo session?

pow! valeu kra!!! era exatamente isso, botei o id dos campos que eu queria e funcionou, não está mais perdendo os valores :smiley:

obrigado ae!

acabo de perceber um problema, usando process ele funcionou, porém tem um problema,

os campos que coloquei no process: process=“DTLancamento,idProjeto” esses campos são required=“true”

então se eu for direto para combobox que utiliza o ajax, sem ter preenchido os campos idProjeto e DTLancamento, ele dah uma mensagem de erro: required true, eu entendi o porque isso acontece porém não sei como resolver…

uma maneira seria tirar o required=“true” mas isso eh gambiarra pois eles devem ser preenchidos…

agradeço as respostas;

Se estiver com ajaxSingle=“true” e com process… ele ignora o required pelo menos aqui funciona assim.

Abraço

estranho… pois está assim como tu dissseste

<h:selectOneMenu id=“idMedida” value="#{lancamentoMedidasBean.sgpLancamentoMedidasForm.sgpLancamentoMedidas.idMedida.idMedida}"
required=“true” requiredMessage="#{msg.obrigatorio}">

            <f:selectItems value="#{lancamentoMedidasBean.listaMedidas2}" />

	<a4j:support [b]process="DTLancamento,idProjeto"[/b] event="onchange" 
	actionListener="#{lancamentoMedidasBean.verificaStatusAcao}"
	[b]ajaxSingle="true" [/b]/>

</h:selectOneMenu>

Primeiramente verifique o escopo de seu managed bean… esse deve ser o real motivo da perda de dados.

Sobre alguns conceitos discutidos no post:

ajaxSingle: Quando o valor de ajaxSingle é “true” significa que o único valor que dev ser incluído na requisição é o valor do componente que disparou a ação. No caso de um a4j:support , o valor incluído é o do componente pai.

process: Permite definir os IDs dos componentes que serão processados juntamente com um componente marcado como ajaxSingle ou com componentes de uma outra region

Os componentes indicados no atributo process passarão por todo o ciclo de vida do JSF, portanto, se algum deles for required=true e não estiver preenchido isso impedirá a submissão do form.

Para o seu caso eu recomendaria que vc incluisse o seu combo dentro de uma ajaxRegion (a4j:region), pois a tag region delimita a parte da view JSF será processada no lado servidor quando a requisição ajax for enviada.

realmente o a4j:region funcionou!!! o problema com o required=“true” sumiu :smiley:

porém eu continuo perdendo o valor dos meus campos que eu ja havia preenchido no formulario :frowning:

eu procurei por scope na minha aplicação e achei isso aqui:

session

seria isso? o motivo pelo qual perco os valores?

[quote=AndreMayer]realmente o a4j:region funcionou!!! o problema com o required=“true” sumiu :smiley:

porém eu continuo perdendo o valor dos meus campos que eu ja havia preenchido no formulario :frowning:

eu procurei por scope na minha aplicação e achei isso aqui:

session

seria isso? o motivo pelo qual perco os valores?[/quote]

Caros, estou tendo o mesmo problema em:
http://guj.com.br/posts/list/0/127882.java#690615

Alguém teria alguma sugestão?

Abraços!

Pessoal tambem estava com o mesmo problema resolvi com um a4j:region coloquei todos os inputs que precisava dentro dele e não utilizei nem ajaxsingle e nem process assim ele envia todos campos dentro a4j:region na requisição ajax só assim o problema foi resolvido.

Ps Em meus testes com a dupla de tags process + ajaxsingle só funcionou com dois campos no meu caso não resolveu uma outra solução seria colocar o backingbean com scopo de session.