[richfaces-issues] [JBoss JIRA] Updated: (RF-3542) AjaxStateManager restores state after redirect (breaks JSF Spec)
Nick Belaevski (JIRA)
jira-events at lists.jboss.org
Mon May 26 18:22:42 EDT 2008
[ http://jira.jboss.com/jira/browse/RF-3542?page=all ]
Nick Belaevski updated RF-3542:
-------------------------------
Fix Version/s: 3.1.x
Assignee: Alexander Smirnov
> AjaxStateManager restores state after redirect (breaks JSF Spec)
> ----------------------------------------------------------------
>
> Key: RF-3542
> URL: http://jira.jboss.com/jira/browse/RF-3542
> Project: RichFaces
> Issue Type: Bug
> Affects Versions: 3.1.5, 3.1.0, 3.1.x
> Environment: JSF 1.1 RI / Myfaces 1.1.5, Tomcat 5.5, server-side state-saving
> Reporter: Mathias Werlitz
> Assigned To: Alexander Smirnov
> Priority: Critical
> Fix For: 3.1.x
>
> Attachments: faces-config.xml, testCase.jsp
>
>
> The implementation of AjaxStateManager changes the general behaviour of JSF and breaks the JSF spec. If Richfaces 3.1.x is deployed with an JSF 1.1 webapp a previous state of a view is (wrongly) restored after a redirect. If Richfaces is not deployed with the same application a new fresh view is created in this case.
> I provided a small test case that does not use any Richfaces components. Set up a very simple JSF webapp with the Sun RI or Myfaces - it doesn't matter.
> Now the test case WITHOUT Richfaces:
> 1. open testCase.jsf in your browser
> 2. enter something different into the first input field
> 3. click "validate"
> You should see some error messages.
> 4. now click "navigate"
> Now the validation will be skipped and the simple navigation rule of the faces-config will kick in: redirecting to the same page. You will see "test" in the first input field. Everything worked fine.
> Now the ERROR: Install Richfaces 3.1.x into the app and do the same as described above.
> After you clicked "navigate" you will see, that the first input field does not read "test" - instead it still shows the input entered before navigating to the page.
> It seems that Richfaces always does restore an previous version of the viewstate if a navigation rule that uses a redirect was used. This is wrong. After a navigation with or without a redirect always a new fresh view/viewsate should be created.
> By the way: If you use Ajax4jsf 1.1.x or remove the "redirect" tag from the navigation rule the test case works fine as the version without Richfaces.
> I traced down the problem to AjaxStateManager line 292 (Richfaces 3.1.5). It seems that if a viewstate was saved for a view than this viewstate will be restored except there is a newer version or no state. Seems to be a fall-back solution. If a redirect was used no newer version was saved, thus an inappropriate old state will be restored although after a navigation a completly new state should be created for the target view (JSF spec).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list