Hi,
I am trying to write some general way to handle application errors with JSF.
I understand application error as error after that user redirected to
some error page.
In my implementation application error is FacesMessage with SEVERITY_FATAL.
I have wrote ApplicationErrorsSupervisor, see code below.
But after redirecting to errors.faces all messages are discarded. And
therefore user doesn't see his fatal error. How can I using JSF add
all messages to view to redirect?
public class ApplicationErrorsSupervisor implements PhaseListener {
public void afterPhase(PhaseEvent event) {}
public void beforePhase(PhaseEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
String viewId = context.getViewRoot().getViewId();
if(viewId.equals(Constants.VIEW_ERROR))
return;
Iterator messages = context.getMessages();
while(messages.hasNext()) {
FacesMessage message = (FacesMessage) messages.next();
if(message.getSeverity() == FacesMessage.SEVERITY_FATAL) {
context.getApplication().getNavigationHandler().handleNavigation(context,
null, "error");
}
}
}
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
}