[ https://issues.apache.org/jira/browse/MYFACES-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13229187#comment-13229187 ]
Martin Kočí commented on MYFACES-3191: -------------------------------------- from spec 2.1: ViewDeclarationLanguage.renderView() : All implementations must: Call endDocument() on the ResponseWriter. Order of invocations in render_response Lifecycle.render: 0) before phase listeners 1) ViewDeclarationLanguage.renderView() (calls responseWriter.endDocument()) 2) after phase listeners 3) facesContext.getExceptionHandler().handle() spec mandates endDocument() in 1) but that is semantically incorrect: AJAX response = XML and it's procedural representation on server is Lifecycle.render, not ViewDeclarationLanguage.renderView. With point 4) call responseWriter.endDocument() as last statement in Lifecycle.render can redirect work. > Handing exception (in exception handler) from render response phase with > forward/redirect is inconsistent > --------------------------------------------------------------------------------------------------------- > > Key: MYFACES-3191 > URL: https://issues.apache.org/jira/browse/MYFACES-3191 > Project: MyFaces Core > Issue Type: Sub-task > Components: General > Affects Versions: 2.1.2-SNAPSHOT > Environment: myfaces trunk > Reporter: Martin Kočí > > View.xhtml snippet: > <h:commandButton value="Submit"> > <f:setPropertyActionListener value="#{true}" > target="#{bean.rendered}" /> > <f:ajax render="outputText" /> > </h:commandButton> > <h:outputText rendered="#{bean.rendered}" id="outputText" > value="#{bean.value}" /> > Bean.java snippet: > public Object getValue() { > throw new NullPointerException(); > } > Custom exception handler code: > if (PhaseId.RENDER_RESPONSE.equals(currentPhaseId)) { > try { > nav.handleNavigation(facesContext, > null, "/ErrorPage.xhtml?faces-redirect=true"); > } finally { > i.remove(); > } > } > Modify view and exception handler to achieve following combinations (HTML > request = comment out f:ajax, forward = remove ?faces-redirect=true) > 1) HTML request + forward: nothing in log, and malformed output is produced > (no closing tags for </body> etc.) > 2) HTML request + redirect: OK , redirect to ErrorPage.xhtml is done > 3) AJAX request + forward: exception in log, bud no forward to ErrorPage > performed > 4) AJAX request + redirect: exception in log, malformed XML produced (<?xml > and <partial-response 2x in output) , no redirect performed -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira