Affects Version/s: 1.0
Fix Version/s: 1.0.3
Environment:Sun JSF Reference Implementation version 1.2 (jsf-impl.jar)
Websphere portlet container version 6.1.0
Apache MyFaces JSF portal bridge version 1.0.1 (portals-bridges-jsf-1.0.1.jar)
The FacesPortlet.process( PortletRequest, PortletResponse) method controls the JSF lifecycle for the MyFaces Portals Bridge.
The six phases of the JSF application lifecycle are:
1. Restore view
2. Apply request values; process events
3. Process validations; process events
4. Update model values; process events
5. Invoke application; process events
6. Render response
The Restore View phase recreates the server-side component tree when a JSF page is revisited.
It looks like the ActionRequest lifecycle processing is missing a restore view step. The code for the RenderRequest restores the view before calling the lifecycle processing.
I would suggest that the Action Request branch of code in the process() method needs to call restoreView as well. This can be done inside the Action Request branch by itself. Or it can be done once before the branch that determines the request type (then remove the restoreView in the Render Request branch. Either way be sure that the view does not get restored twice.
Please consider this change. Let me know if you think of any problems with this suggestion.
- Matt Bruzek