Current server state saving implementation prevents multi-window usage
----------------------------------------------------------------------
Key: MYFACES-3117
URL: https://issues.apache.org/jira/browse/MYFACES-3117
Project: MyFaces Core
Issue Type: Bug
Components: General
Affects Versions: 2.0.6-SNAPSHOT
Environment: myfaces core trunk
Reporter: Martin Kočí
Priority: Critical
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.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira