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] Resolved: (SHALE-371) prerender() executes for ViewController not rendered when navigating to page/bean not implementing ViewController
Date Sat, 23 Dec 2006 20:59:57 GMT
     [ http://issues.apache.org/struts/browse/SHALE-371?page=all ]

Craig McClanahan resolved SHALE-371.
------------------------------------

    Resolution: Fixed

Stan, your analysis is spot on.  I've added test cases (for both shale-test-view and shale-test-tiger)
to execute your test case, and added your one-line fix to make it work correctly.  This will
be available on the 20061224 nightly build, and the upcoming 1.0.4 release.  Thanks for the
patch, and the patience to get the details through my head :-).


> 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