[ 
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


Reply via email to