Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
When WebPage#dirty() method is called it checks wether the request is an ajax request or not.
If the request is an ajax-request the page keeps the same page-id, if not the page-id is incremented.
AtmosphereWebRequest returns false when isAjax() is called.
As a result, page-ids are incremented when posted messages to the eventbus is processed.
The new state of the page will be stored with a new id.
Any subsequent posts or ajax-events will not be able to access the new state, they will still access the page with the old id.
AtmosphereWebRequest should return true when isAjax() is called.
Example:
If you create a simple page with a listview and a list that can be updated with both wicket-atmosphere and wicket-ajax this will happen:
After instantiation:
pagestore:
0 : empty list
Add one string with wicket ajax:
pagestore:
0 : "This message was added with ajax"
Add one string with wicket-atmosphere
pagestore:
0: "This message was added with ajax"
1: "This message was added with ajax", "This method was added with atmosphere"
At this point, if the user refreshes the page, updates the list with ajax or atmosphere the user will se the result of page with id 0. The change that was performed with atmosphere will be lost.