1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
public class ResubmitMethodInterceptor implements PhaseListener {
private static final Logger LOG = Logger.getLogger(ResubmitMethodInterceptor.class);
public void afterPhase(PhaseEvent event) {}
public void beforePhase(PhaseEvent event) {
if (event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
LOG.debug("beforePhase(..) : " + event.getPhaseId());
FacesContext facesContext = event.getFacesContext();
HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
String oldViewState = (String) request.getSession().getAttribute(Constantes.BEAN_OLD_VIEW_STATE);
LOG.debug("oldRequest récupérée");
if (oldViewState != null) {
if (oldViewState.equals(request.getParameter("javax.faces.ViewState"))) {
LOG.debug("requêtes identiques");
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, Constantes.FWD_RESUBMIT);
} else {
LOG.debug("requêtes différentes");
request.getSession().setAttribute(Constantes.BEAN_OLD_VIEW_STATE, request.getParameter("javax.faces.ViewState"));
}
} else {
LOG.debug("oldRequest null : stockage de la nouvelle request");
request.getSession().setAttribute(Constantes.BEAN_OLD_VIEW_STATE, request.getParameter("javax.faces.ViewState"));
}
LOG.debug("FIN beforePhase(..)");
}
}
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
} |
Partager