1 package com.indexdata.pz2utils4jsf.exceptions;
\r
3 import java.util.Iterator;
\r
5 import javax.faces.FacesException;
\r
6 import javax.faces.application.NavigationHandler;
\r
7 import javax.faces.application.ViewExpiredException;
\r
8 import javax.faces.context.ExceptionHandler;
\r
9 import javax.faces.context.ExceptionHandlerWrapper;
\r
10 import javax.faces.context.FacesContext;
\r
11 import javax.faces.event.ExceptionQueuedEvent;
\r
12 import javax.faces.event.ExceptionQueuedEventContext;
\r
14 public class CustomExceptionHandler extends ExceptionHandlerWrapper {
\r
16 private ExceptionHandler wrapped;
\r
18 public CustomExceptionHandler (ExceptionHandler wrapped) {
\r
19 this.wrapped = wrapped;
\r
23 public ExceptionHandler getWrapped() {
\r
24 return this.wrapped;
\r
28 public void handle() throws FacesException {
\r
29 for (Iterator<ExceptionQueuedEvent> i = getUnhandledExceptionQueuedEvents().iterator(); i.hasNext();) {
\r
30 ExceptionQueuedEvent event = i.next();
\r
31 ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) event.getSource();
\r
32 Throwable t = context.getException();
\r
33 if (t instanceof ViewExpiredException) {
\r
34 // ViewExpiredException vee = (ViewExpiredException) t;
\r
35 FacesContext fc = FacesContext.getCurrentInstance();
\r
36 // Map<String, Object> requestMap = fc.getExternalContext().getRequestMap();
\r
37 NavigationHandler nav = fc.getApplication().getNavigationHandler();
\r
38 context.getContext().getPartialViewContext().setRenderAll(true);
\r
40 nav.handleNavigation(fc, null, "search");
\r
41 fc.renderResponse();
\r
47 getWrapped().handle();
\r