You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Adam Winer (JIRA)" <de...@myfaces.apache.org> on 2006/04/13 19:54:00 UTC

[jira] Commented: (TOMAHAWK-253) Dummy form code must call StateManager.saveSerializedView() for server-side state saving

    [ http://issues.apache.org/jira/browse/TOMAHAWK-253?page=comments#action_12374383 ] 

Adam Winer commented on TOMAHAWK-253:
-------------------------------------

As with my last issue, no true patch, but a one-line fix provided in the bug text.

> Dummy form code must call StateManager.saveSerializedView() for server-side state saving
> ----------------------------------------------------------------------------------------
>
>          Key: TOMAHAWK-253
>          URL: http://issues.apache.org/jira/browse/TOMAHAWK-253
>      Project: MyFaces Tomahawk
>         Type: Bug

>     Versions: 1.1.2-SNAPSHOT
>  Environment: Generic issue.
>     Reporter: Adam Winer

>
> The current dummy form code in DummyFormUtils has a block that reads:
>         if (stateManager.isSavingStateInClient(facesContext))
>         {
>             //render state parameters
>             //TODO: Optimize saveSerializedView call, because serialized view is built twice!
>             StateManager.SerializedView serializedView = stateManager.saveSerializedView(facesContext);
>             stateManager.writeState(facesContext, serializedView);
>         }
>         else
>         {
>             writer.startElement(HTML.INPUT_ELEM, null);
>             writer.writeAttribute(org.apache.myfaces.shared_tomahawk.renderkit.html.HTML.TYPE_ATTR, org.apache.myfaces.shared_tomahawk.renderkit.html.HTML.INPUT_TYPE_HIDDEN, null);
>             writer.writeAttribute(HTML.NAME_ATTR, org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.SEQUENCE_PARAM, null);
>             writer.writeAttribute(org.apache.myfaces.shared_tomahawk.renderkit.html.HTML.VALUE_ATTR, org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getViewSequence(facesContext), null);
>             writer.endElement(org.apache.myfaces.shared_tomahawk.renderkit.html.HTML.INPUT_ELEM);
>         }
> Note that stateManager.saveSerializedView() is only called for client-side state saving.
> This means that the dummy form code never actually gets around to calling stateManager.saveSerializedView(), so unless someone else has called this method, the view never actually gets saved in the session.  This is breaking the latest release of Facelets (1.1.5), which has added optimizations that avoid unnecessary calls to the StateManager.
> Simple fix:   haul 
>             StateManager.SerializedView serializedView = stateManager.saveSerializedView(facesContext);
> ... out of the "if" block.
> Ideally, this code should be refactored so that the server-side code is also calling StateManager.writeState() too - it's a significant problem that DummyFormUtils has hardcoded knowledge of how the StateManager works.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira