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
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
importjava.util.Map;importjavax.faces.context.FacesContext;importorg.springframework.beans.factory.ObjectFactory;importorg.springframework.beans.factory.config.Scope;/** * Disponibiliza o view scope para managed beans gerenciados pelo spring * */publicclassViewScopeimplementsScope{publicObjectget(Stringname,@SuppressWarnings("rawtypes")ObjectFactoryobjectFactory){Map<String,Object>viewMap=FacesContext.getCurrentInstance().getViewRoot().getViewMap();if(viewMap.containsKey(name)){returnviewMap.get(name);}else{Objectobject=objectFactory.getObject();viewMap.put(name,object);returnobject;}}publicObjectremove(Stringname){returnFacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);}publicStringgetConversationId(){returnnull;}publicvoidregisterDestructionCallback(Stringname,Runnablecallback){//Not supported}publicObjectresolveContextualObject(Stringkey){returnnull;}}
Hebert_Coelho
Scoobydoo:
Entendi… Bom vou tentar utilizar o @Scope(“view”)
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. [=