This content has been marked as final.
Show 2 replies
-
1. Re: Can't deactivateConversations when exception occurred in jsf
nickarls Sep 30, 2010 8:06 AM (in response to alin.heyoulin.qq.com)Could you file a JIRA for this?
-
2. Re: Can't deactivateConversations when exception occurred in jsf
alin.heyoulin.qq.com Oct 2, 2010 4:36 PM (in response to alin.heyoulin.qq.com)I created a jira to jsf2 [=>https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1812] I create a ExceptionHandler to handle this exception instead of jsf2 default handle like this in seam2.0 I don't konow if this is a seam bug or jsf bug. public class DelegatingExceptionHandler extends ExceptionHandlerWrapper { ....... @Override public void handle() throws FacesException { ExceptionQueuedEvent handled = null; Iterator<ExceptionQueuedEvent> exs = getUnhandledExceptionQueuedEvents().iterator(); if(exs.hasNext()) { handled=exs.next(); ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) handled.getSource(); FacesContext facesContext=context.getContext(); ExternalContext externalContext = facesContext.getExternalContext(); try { if (facesContext.getPartialViewContext().isAjaxRequest()) { externalContext.setResponseContentType("text/xml"); externalContext.addResponseHeader("Cache-Control", "no-cache"); PartialResponseWriter writer = facesContext.getPartialViewContext().getPartialResponseWriter(); writer.startDocument(); writer.startUpdate("javax.faces.ViewRoot"); writer.startElement("span",null); writer.writeAttribute("id","target","id"); writer.endElement("span"); writer.startElement("script",null); writer.writeAttribute("type","text/javascript","type"); writer.write("alert('"+context.getException().getMessage()+"');"); writer.endElement("script"); writer.endUpdate(); writer.endDocument(); writer.flush(); facesContext.responseComplete(); Manager.instance().endRequest( externalContext.getSessionMap() ); FacesLifecycle.endRequest( externalContext ); } else { Exceptions.instance().handle(new Exception(context.getException())); } exs.remove(); } catch (Exception e) { getWrapped().handle(); if(facesContext.getRenderResponse() || facesContext.getResponseComplete()) { externalContext = facesContext.getExternalContext(); Manager.instance().endRequest( externalContext.getSessionMap() ); FacesLifecycle.endRequest( externalContext ); } } } } ........... }