Página JSF mantem-se na memória mesmo após trocar de tela

5 respostas
Scoobydoo

Olá… tenho um menu feito com primefaces… Sempre que eu abro uma tela, de cadastro de usuários por exemplo, se eu já abri ela em outro momento, ele apenas me exibe a tela novamente. Como se fosse um sistema de abas. Ele não libera a memória da página quando eu fecho ela…
Preciso explicar mais ou á algo que vocês podem me indicar…?
Estou usando

@Scope("session")

5 Respostas

Hebert_Coelho

Se você está usando session, todos os dados sim, ficarão na sessão do usuário.

Oq você teria que fazer era reiniciar os dados manualmente. [=

Scoobydoo

Bom… alguma recomendação com relação a isso???
Os dados estão armazenados em um Controller… Preciso “reiniciar esse controle” quando ele sair da página…
Como procedo? Tem alguma função, onClose() rsrsrsrs???

Se não… seria melhor trabalhar com algum outro tipo de Scope ?

Hebert_Coelho

Scoobydoo:
Bom… alguma recomendação com relação a isso???
Os dados estão armazenados em um Controller… Preciso “reiniciar esse controle” quando ele sair da página…
Como procedo? Tem alguma função, onClose() rsrsrsrs???

Se não… seria melhor trabalhar com algum outro tipo de Scope ?

Em minhas aplicação não uso Session a ñ ser para guardar dados do usuário.

Ao invés de reiniciar os dados quando o usuário sair da tela, você poderia reiniciar antes dele entrar na tela. Chama um método que reinicie os valores e depois abra a tela. Só não esqueça de dar um update no form.
[=

Scoobydoo

Entendi... Bom vou tentar utilizar o @Scope("view") :D
Dessa maneira ele vai armazenar os dados até ele trocar de tela correto?
Terei algum problema se fizer dessa forma?
Estou usando Spring

ViewScope.java

import java.util.Map;

import javax.faces.context.FacesContext;

import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;

/**
 * Disponibiliza o view scope para managed beans gerenciados pelo spring
 *
 */
public class ViewScope implements Scope {

    public Object get(String name, @SuppressWarnings("rawtypes") ObjectFactory objectFactory) {
        Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
        if (viewMap.containsKey(name)) {
            return viewMap.get(name);
        } else {
            Object object = objectFactory.getObject();
            viewMap.put(name, object);
            return object;
        }
    }

    public Object remove(String name) {
        return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
    }

    public String getConversationId() {
        return null;
    }

    public void registerDestructionCallback(String name, Runnable callback) {
        //Not supported
    }

    public Object resolveContextualObject(String key) {
        return null;
    }
}
Hebert_Coelho

Scoobydoo:
Entendi… Bom vou tentar utilizar o @Scope(“view”) :smiley:
Dessa maneira ele vai armazenar os dados até ele trocar de tela correto?
Terei algum problema se fizer dessa forma?
Pode ter se você utilizá-lo de forma incorreta. [=

Boa sorte aí. [=

Criado 11 de maio de 2012
Ultima resposta 11 de mai. de 2012
Respostas 5
Participantes 2