[
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