[
https://issues.apache.org/jira/browse/MYFACES-3191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13228750#comment-13228750
]
Martin Kočí commented on MYFACES-3191:
--------------------------------------
a user found it too:
http://www.mail-archive.com/[email protected]/msg58387.html
this problem is bigger, because user can have buggy render_respose phase for
following reasons:
1) getters with unexpected exceptions like NPE
2) lazy loading errors
3) buggy f:event type="preRender" listener - with JSF 2. 0 it is possible to
register listeners for render response phase
4) ...
Implementation:
myfaces close XML document in PartialViewContextImpl after (successful or
unsuccessful) rendering.
But in case of a exception is necessary to add other elements in outputed XML:
1) <error> elements from AjaxExceptionHandlerImpl
2) <redirect> from
org.apache.myfaces.context.servlet.ServletExternalContextImpl.redirect(String)
3) custom elemetns from custom exception handler
I think this is doable in code, but what specification says?
> 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