You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mc...@apache.org on 2010/06/16 20:48:29 UTC

svn commit: r955345 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application: ViewHandlerImpl.java jsp/JspStateManagerImpl.java jsp/JspViewHandlerImpl.java

Author: mconcini
Date: Wed Jun 16 18:48:29 2010
New Revision: 955345

URL: http://svn.apache.org/viewvc?rev=955345&view=rev
Log:
MYFACES-2754 - fix client side state saving issues caused by original changes.

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java?rev=955345&r1=955344&r2=955345&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java Wed Jun 16 18:48:29 2010
@@ -44,6 +44,7 @@ import javax.faces.view.ViewDeclarationL
 import javax.faces.view.ViewMetadata;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.myfaces.application.jsp.JspStateManagerImpl;
 import org.apache.myfaces.shared_impl.application.DefaultViewHandlerSupport;
 import org.apache.myfaces.shared_impl.application.InvalidViewIdException;
 import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
@@ -248,17 +249,7 @@ public class ViewHandlerImpl extends Vie
         if(context.getPartialViewContext().isAjaxRequest())
             return;
 
-        // Facelets specific hack:
-        // Tell the StateWriter that we're about to write state
-        StateWriter stateWriter = StateWriter.getCurrentInstance();
-        if (stateWriter != null)
-        {
-            // Write the STATE_KEY out. Unfortunately, this will
-            // be wasteful for pure server-side state managers where nothing
-            // is actually written into the output, but this cannot
-            // programatically be discovered
-            stateWriter.writingState();
-        }
+        setWritingState(context);
 
         StateManager stateManager = context.getApplication().getStateManager();
         if (stateManager.isSavingStateInClient(context))
@@ -275,6 +266,24 @@ public class ViewHandlerImpl extends Vie
         }
     }
     
+    private void setWritingState(FacesContext context){
+        // Facelets specific hack:
+        // Tell the StateWriter that we're about to write state
+        StateWriter stateWriter = StateWriter.getCurrentInstance();
+        if (stateWriter != null)
+        {
+            // Write the STATE_KEY out. Unfortunately, this will
+            // be wasteful for pure server-side state managers where nothing
+            // is actually written into the output, but this cannot
+            // programatically be discovered
+            stateWriter.writingState();
+        }else
+        {
+            //we're in a JSP, let the JSPStatemanager know that we need to actually write the state
+            context.getAttributes().put(JspStateManagerImpl.JSP_IS_WRITING_STATE_ATTR, true);
+        }        
+    }
+    
     private Map<String, List<String>> getViewParameterList(FacesContext context,
             String viewId, Map<String, List<String>> parametersFromArg)
     {

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java?rev=955345&r1=955344&r2=955345&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java Wed Jun 16 18:48:29 2010
@@ -179,7 +179,7 @@ public class JspStateManagerImpl extends
 
     private static final int JSF_SEQUENCE_INDEX = 0;
 
-    private static final String JSP_IS_WRITING_STATE_ATTR = "org.apache.myfaces.JSP_IS_WRITING_STATE";
+    public static final String JSP_IS_WRITING_STATE_ATTR = "org.apache.myfaces.JSP_IS_WRITING_STATE";
     
     private RenderKitFactory _renderKitFactory = null;
     
@@ -594,8 +594,6 @@ public class JspStateManagerImpl extends
         RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, uiViewRoot.getRenderKitId());
         ResponseStateManager responseStateManager = renderKit.getResponseStateManager();
         
-        setWritingState(facesContext);
-        
         if (isLegacyResponseStateManager(responseStateManager))
         {
             responseStateManager.writeState(facesContext, serializedView);
@@ -973,10 +971,6 @@ public class JspStateManagerImpl extends
 
         return true;
     }
-
-    private void setWritingState(FacesContext context){
-        context.getAttributes().put(JSP_IS_WRITING_STATE_ATTR, true);
-    }
     
     private boolean isWritingState(FacesContext context){
         Boolean writingState = (Boolean)context.getAttributes().get(JSP_IS_WRITING_STATE_ATTR); 

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java?rev=955345&r1=955344&r2=955345&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java Wed Jun 16 18:48:29 2010
@@ -553,6 +553,8 @@ public class JspViewHandlerImpl extends 
     public void writeState(FacesContext facesContext) throws IOException
     {
         StateManager stateManager = facesContext.getApplication().getStateManager();
+        setWritingState(facesContext);
+
         if (stateManager.isSavingStateInClient(facesContext))
         {
         // Only write state marker if javascript view state is disabled
@@ -566,6 +568,10 @@ public class JspViewHandlerImpl extends 
             stateManager.writeState(facesContext, new Object[2]);
         }
     }
+    
+    private void setWritingState(FacesContext context){
+        context.getAttributes().put(JspStateManagerImpl.JSP_IS_WRITING_STATE_ATTR, true);
+    }
 
     /**
      * Writes the response and replaces the state marker tags with the state information for the current context