Details
Description
Problem:
open two tabs (or windows) in browser with view:
<h:body>
<h:form id="formId">
<h:commandButton value="Click me 20x!" />
</h:form>
</h:body>
then click the button on the first tab 20x or more -> then click the button on the second tab -> you will get the most beloved ViewExpiredException.
Reason:
oam.SerializedViewCollection drops the saved state for 2. tab from map.
Suggestion:
remove the successfully restored view state from map. This can be done, because each SerializedViewKey is unique over all requests for one HttpSession - see DefaultFaceletsStateManagementHelper.nextViewSequence(FacesContext). Because each request has unique sequence number, we can the "just restored" one remove from the map, because it can never come from client again.
Open question: the previous statement is true except the double submit problem: JAVASERVERFACES_SPEC_PUBLIC-559. In this case, server can process same request (with the same sequence number) twice.
Attachments
Attachments
Issue Links
- incorporates
-
MYFACES-3100 Repeated postbacks create additional serialized views
- Closed
- is duplicated by
-
MYFACES-1847 View to be restored was removed and cannot be retrieved from the map (JspStatemanagerImpl)
- Closed
-
MYFACES-1791 state management and multiple frames
- Closed
- is related to
-
MYFACES-1753 Do not require to buffer the output with server-side-state-saving
- Closed