Fórum Jsf Duplica quando precionado F5 #394251
24/01/2011
0
Antonio Ishac
Curtir tópico
+ 0Post mais votado
19/04/2011
@WebFilter(servletNames={"Faces Servlet"})
public class JPAFilter implements Filter {
private EntityManagerFactory factory;
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
EntityManager entityManager = this.factory.createEntityManager();
request.setAttribute("entityManager", entityManager);
chain.doFilter(request, response);
try {
entityManager.getTransaction().begin();
entityManager.getTransaction().commit();
} catch (Exception e) {
entityManager.getTransaction().rollback();
} finally {
entityManager.close();
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.factory = Persistence.createEntityManagerFactory("estudojpaPU");
}
@Override
public void destroy() {
this.factory.close();
}
}
Antonio Ishac
Gostei + 1
Mais Posts
26/01/2011
Dyego Carmo
O JSF possui alguns mecanismos para evitar esse tipo de coisa....
mas se for chamada DIRETA... vai duplicar mesmo... voce vai ter que fazer chamadas indiretas para que este problema nao ocorra !
Gostei + 0
26/01/2011
Antonio Ishac
Meu formulário invoca o managedbean pelo <h:commandbutton action="#{meuBean.salva} />
Quero saber como posso fazer esse controle utilizando a tecnologia jsf 2 para que essas coisas não aconteça ?.
me ajudem......
Gostei + 0
29/01/2011
Andrei Hirata
Gostei + 0
31/01/2011
Antonio Ishac
Gostei + 0
02/02/2011
Antonio Ishac
Gostei + 0
02/02/2011
Robson Teixeira
Você poderia fazer uso do phase-listener ja que ele age dentro do ciclo de vida do JSF acredito que isso possa ajuda-lo.
att
robson
Gostei + 0
03/02/2011
Antonio Ishac
atenciosamente
Antônio Ishac
Gostei + 0
05/02/2011
Robson Teixeira
segue 1 exemplo do phase-listener aplicado somente a internacionalização para ter uma ideia com como usar-lo para tratar as suas requisição quando usa o f5.
import javax.faces.event.PhaseListener;
public class LocalePhaseListener implements PhaseListener {
@Override
public void afterPhase(PhaseEvent event) {
if (event.getPhaseId().equals(PhaseId.RESTORE_VIEW)){
if (SessionManager.getUsuarioInSession()!=null && SessionManager.getUsuarioInSession().getIdioma()!=null){
event.getFacesContext().getViewRoot().setLocale((Locale)
new Locale(SessionManager.getUsuarioInSession().getIdioma()));
}else{
event.getFacesContext().getViewRoot().setLocale(
JsfUtil.getFacesContext().getApplication().getDefaultLocale());
}
}
}
@Override
public void beforePhase(PhaseEvent event) {
if (event.getPhaseId().equals(PhaseId.RENDER_RESPONSE)){
if (SessionManager.getUsuarioInSession()!=null && SessionManager.getUsuarioInSession().getIdioma()!=null){
event.getFacesContext().getViewRoot().setLocale((Locale)
new Locale(SessionManager.getUsuarioInSession().getIdioma()));
}else{
event.getFacesContext().getViewRoot().setLocale(
JsfUtil.getFacesContext().getApplication().getDefaultLocale());
}
}
}
@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}
adicionar no faces-config
<lifecycle>
<phase-listener>br.com.view.util.listener.LocalePhaseListener</phase-listener>
</lifecycle>
espero que tenha ajudado
att
robson
Gostei + 0
06/02/2011
Antonio Ishac
Gostei + 0
11/02/2011
Dyego Carmo
Caso esteja corrigido favor fechar a pendencia !
Valeu !
Gostei + 0
11/02/2011
Antonio Ishac
Gostei + 0
26/04/2011
Dyego Carmo
Se sim , por favor feche o chamado :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)