a4j:keepALive

7 respostas
evertonsilvagomesjav

Pessoal tem como me ajudarem a entender o keepAlive?
Andei lendo e 'estava' achando que ele mantinha o estado do bean de request quando eu fizesse alguma requisição, mas quando eu mudo de pagina e volto o meu inputText ta vazio.

<h:form>
<a4j:keepAlive beanName="beanOneRequest"/>
	<rich:panel>
		<div>
			<span> <h:outputLabel value="Nome Bean Um: " /> <h:inputText
					value="#{beanOneRequest.nome}" />
			</span>
		</div>
		<div>
			<span> <a4j:commandButton action="#{beanDoisRequest.exibir}" value="redirecionar para bean dois" />
			</span>			
		</div>
	</rich:panel>
</h:form>
</html>

Quando eu clico no commandButton e vou para o beanDoisRequest e volto para esse pagina o inputText ta vazio mesmo eu digitando um nome, alguem pode me ajudar?

7 Respostas

A

Ele mantém o estado enquanto houver vinculo de uma “pagina” com um bean!

No seu caso, vc esta chamando beanDoisRequest! Se a pagina que esta vinculada com seu beanDoisReuqest nao conter <a4j:keepAlive beanName=“beanOneRequest”/> ele nao vai manter o estado.

Os beans nesse caso devem implementar Serializable.

evertonsilvagomesjav

apalmeira:
Ele mantém o estado enquanto houver vinculo de uma “pagina” com um bean!

No seu caso, vc esta chamando beanDoisRequest! Se a pagina que esta vinculada com seu beanDoisReuqest nao conter <a4j:keepAlive beanName=“beanOneRequest”/> ele nao vai manter o estado.

Os beans nesse caso devem implementar Serializable.

Opa cara, vou testar e posto aqui.

Mas so te perguntar, no caso eu quero manter o estado do meu beanOneRequest eu preciso colocar os dois no keepAlive entao? Tanto o que eu quero manter o estado quando ao bean que irei chamar?

A

Isso mesmo!

A sua segunda página deve ficar assim:
<a4j:keepAlive beanName=“beanOneRequest”/>
<a4j:keepAlive beanName=“beanTwoRequest”/>

evertonsilvagomesjav

Hum, eu testei e vi aqui, se eu colocar na minha primeira pagina o <a4j:keepAlive beanName=“beanTwoRequest”/>
quando eu vir da segunda pagina para ela ele mantem o estado da segunda, uma pagina mantem o estado da outra ou melhor dizendo um bean mantem o estado do outro?

A

Na verdade o keepalive vai serializar seu bean e depois vai carrega-lo novamente na outra pagina. Ele é o responsável por manter o estado.

evertonsilvagomesjav

Mas entao sempre que eu quiser manter o estado de um bean, eu tenho que coloca-lo no keepAlive da outra pagina que irei redirecionar né?

A

Sim!

Criado 19 de junho de 2012
Ultima resposta 20 de jun. de 2012
Respostas 7
Participantes 2