myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Kočí (Commented) (JIRA) <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-3191) Handing exception (in exception handler) from render response phase with forward/redirect is inconsistent
Date Tue, 13 Mar 2012 22:00:40 GMT

    [ 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/users@myfaces.apache.org/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

       

Mime
View raw message