shale-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig McClanahan (JIRA)" <j...@apache.org>
Subject [jira] Updated: (SHALE-371) prerender() executes for ViewController not rendered when navigating to page/bean not implementing ViewController
Date Fri, 22 Dec 2006 02:41:57 GMT
     [ http://issues.apache.org/struts/browse/SHALE-371?page=all ]

Craig McClanahan updated SHALE-371:
-----------------------------------

    Fix Version/s: 1.0.4-SNAPSHOT

This is indeed a bug ... the view controller interface promises to call prerender() only for
the view that will actually be rendered, so calling it on the "from" view in this case is
definitely wrong.  On the surface, your fix looks good ... I'll test it before committing.
 This fix is needed for 1.0.4, but should not take too long.


> prerender() executes for ViewController not rendered when navigating to page/bean not
implementing ViewController
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: SHALE-371
>                 URL: http://issues.apache.org/struts/browse/SHALE-371
>             Project: Shale
>          Issue Type: Bug
>          Components: View
>    Affects Versions: 1.0.4-SNAPSHOT
>         Environment: Windows XP Pro, Tomcat 5.5, JDK 1.5.0_04, MyFaces
>            Reporter: Stan Zapryanov
>         Assigned To: Craig McClanahan
>             Fix For: 1.0.4-SNAPSHOT
>
>
> Not sure if this is a bug but it looks like it. 
> When navigating to a view (JSF) not implementing the ViewHandler framework from a ViewController
t(JSF/bean) that does, currently the prerender() method gets executed on the viewcontroller
that you are leaving (that won't get rendered). 
> My guess is that currently the old FacesConstants.VIEW_NAME_RENDERED entry remains in
the request map even though you are not rendering that viewconroller, and that triggers the
execution of prerender(). 
> Here is a suggested fix that appears to correct the problem described but I woudn't know
if it may brake other stuff.. :
> In the setupViewController() method of the ViewViewHandler class:
>             vc = vr.resolveVariable(context, viewName);
>             if (vc == null) {
>                 if (log.isDebugEnabled()) {
>                     log.debug(messages.getMessage("view.noViewController",
>                                                   new Object[] { viewId, viewName }));
>                 }
> // ---- START OF PROPOSED FIX 
>              context.getExternalContext().getRequestMap() .remove(FacesConstants.VIEW_NAME_RENDERED);

> //------END OF FIX-------
>                 return;
>             }
> Hope all makes sense and was helpful. 
> Cheers!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message