[ 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