You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2015/04/01 03:32:03 UTC

svn commit: r1670536 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java

Author: lu4242
Date: Wed Apr  1 01:32:03 2015
New Revision: 1670536

URL: http://svn.apache.org/r1670536
Log:
MYFACES-3949 javax.faces.ViewState autocomplete

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java?rev=1670536&r1=1670535&r2=1670536&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java Wed Apr  1 01:32:03 2015
@@ -38,6 +38,7 @@ import org.apache.myfaces.renderkit.Stat
 import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
@@ -71,14 +72,25 @@ public class HtmlResponseStateManager ex
     public static final String INIT_PARAM_HANDLE_STATE_CACHING_MECHANICS
             = "org.apache.myfaces.HANDLE_STATE_CACHING_MECHANICS";
     
+    /**
+     * Add autocomplete="off" to the view state hidden field. Enabled by default.
+     */
+    @JSFWebConfigParam(since="2.2.8, 2.1.18, 2.0.24", expectedValues="true, false", 
+           defaultValue="true", group="state")
+    public static final String INIT_PARAM_AUTOCOMPLETE_OFF_VIEW_STATE = 
+            "org.apache.myfaces.AUTOCOMPLETE_OFF_VIEW_STATE";
+            
     private StateCacheFactory _stateCacheFactory;
     
     private StateTokenProcessor _stateTokenProcessor;
     
+    private Boolean _autoCompleteOffViewState;
+    
     public HtmlResponseStateManager()
     {
         _stateCacheFactory = new StateCacheFactoryImpl();
         _stateTokenProcessor = new DefaultStateTokenProcessor();
+        _autoCompleteOffViewState = null;
     }
     
     @Override
@@ -147,6 +159,10 @@ public class HtmlResponseStateManager ex
                     facesContext), null);
         }
         responseWriter.writeAttribute(HTML.VALUE_ATTR, serializedState, null);
+        if (this.isAutocompleteOffViewState(facesContext))
+        {
+            responseWriter.writeAttribute(HTML.AUTOCOMPLETE_ATTR, "off", null);
+        }
         responseWriter.endElement(HTML.INPUT_ELEM);
     }
 
@@ -369,4 +385,14 @@ public class HtmlResponseStateManager ex
             return STATELESS_TOKEN.equals(token);
         }
     }
+    
+    private boolean isAutocompleteOffViewState(FacesContext facesContext)
+    {
+        if (_autoCompleteOffViewState == null)
+        {
+            _autoCompleteOffViewState = WebConfigParamUtils.getBooleanInitParameter(facesContext.getExternalContext(),
+                    INIT_PARAM_AUTOCOMPLETE_OFF_VIEW_STATE, true);
+        }
+        return _autoCompleteOffViewState;
+    }
 }