Class StateManager

  • Direct Known Subclasses:
    StateManagerWrapper

    public abstract class StateManager
    extends java.lang.Object

    StateManager directs the process of saving and restoring the view between requests. An implementation of this class must be thread-safe. The StateManager instance for an application is retrieved from the Application instance, and thus cannot know any details of the markup language created by the RenderKit being used to render a view. The StateManager utilizes a helper object (ResponseStateManager), that is provided by the RenderKit implementation and is therefore aware of the markup language details.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME
      The runtime must interpret the value of this parameter as a comma separated list of view IDs, each of which must have their state saved using the state saving mechanism specified in Jakarta Faces 1.2.
      static java.lang.String IS_BUILDING_INITIAL_STATE
      Marker within the FacesContext attributes map to indicate we are marking initial state, so the markInitialState() method of iterating components such as UIData could recognize this fact and save the initial state of descendents.
      static java.lang.String IS_SAVING_STATE
      Marker within the FacesContext attributes map to indicate we are saving state.
      static java.lang.String PARTIAL_STATE_SAVING_PARAM_NAME
      The ServletContext init parameter consulted by the runtime to determine if the partial state saving mechanism should be used.
      static java.lang.String SERIALIZE_SERVER_STATE_PARAM_NAME
      If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, and the jakarta.faces.STATE_SAVING_METHOD is set to "server" (as indicated below), the server state must be guaranteed to be Serializable such that the aggregate state implements java.io.Serializable.
      static java.lang.String STATE_SAVING_METHOD_CLIENT
      Constant value for the initialization parameter named by the STATE_SAVING_METHOD_PARAM_NAME that indicates state saving should take place on the client.
      static java.lang.String STATE_SAVING_METHOD_PARAM_NAME
      The ServletContext init parameter consulted by the StateManager to tell where the state should be saved.
      static java.lang.String STATE_SAVING_METHOD_SERVER
      Constant value for the initialization parameter named by the STATE_SAVING_METHOD_PARAM_NAME that indicates state saving should take place on the server.
    • Constructor Summary

      Constructors 
      Constructor Description
      StateManager()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String getViewState​(FacesContext context)
      Convenience method to return the view state as a String with no RenderKit specific markup.
      boolean isSavingStateInClient​(FacesContext context)
      Method to determine if the state is saved on the client.
      void writeState​(FacesContext context, java.lang.Object state)
      Save the state represented in the specified state Object instance, in an implementation dependent manner.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • PARTIAL_STATE_SAVING_PARAM_NAME

        public static final java.lang.String PARTIAL_STATE_SAVING_PARAM_NAME

        The ServletContext init parameter consulted by the runtime to determine if the partial state saving mechanism should be used.

        If undefined, the runtime must determine the version level of the application.

        • For applications versioned at 1.2 and under, the runtime must not use the partial state saving mechanism.

        • For applications versioned at 2.0 and above, the runtime must use the partial state saving mechanism.

        If this parameter is defined, and the application is versioned at 1.2 and under, the runtime must not use the partial state saving mechanism. Otherwise, If this param is defined, and calling toLowerCase().equals("true") on a String representation of its value returns true, the runtime must use partial state mechanism. Otherwise the partial state saving mechanism must not be used.

        Since:
        2.0
        See Also:
        Constant Field Values
      • FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME

        public static final java.lang.String FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME

        The runtime must interpret the value of this parameter as a comma separated list of view IDs, each of which must have their state saved using the state saving mechanism specified in Jakarta Faces 1.2.

        See Also:
        Constant Field Values
      • IS_SAVING_STATE

        public static final java.lang.String IS_SAVING_STATE

        Marker within the FacesContext attributes map to indicate we are saving state. The implementation must set this marker into the map before starting the state saving traversal and the marker must be cleared, in a finally block, after the traversal is complete.

        See Also:
        Constant Field Values
      • IS_BUILDING_INITIAL_STATE

        public static final java.lang.String IS_BUILDING_INITIAL_STATE

        Marker within the FacesContext attributes map to indicate we are marking initial state, so the markInitialState() method of iterating components such as UIData could recognize this fact and save the initial state of descendents.

        Since:
        2.1
        See Also:
        Constant Field Values
      • SERIALIZE_SERVER_STATE_PARAM_NAME

        public static final java.lang.String SERIALIZE_SERVER_STATE_PARAM_NAME

        If this param is set, and calling toLowerCase().equals("true") on a String representation of its value returns true, and the jakarta.faces.STATE_SAVING_METHOD is set to "server" (as indicated below), the server state must be guaranteed to be Serializable such that the aggregate state implements java.io.Serializable. The intent of this parameter is to ensure that the act of writing out the state to an ObjectOutputStream would not throw a NotSerializableException, but the runtime is not required verify this before saving the state.

        Since:
        2.2
        See Also:
        Constant Field Values
      • STATE_SAVING_METHOD_CLIENT

        public static final java.lang.String STATE_SAVING_METHOD_CLIENT

        Constant value for the initialization parameter named by the STATE_SAVING_METHOD_PARAM_NAME that indicates state saving should take place on the client.

        See Also:
        Constant Field Values
      • STATE_SAVING_METHOD_SERVER

        public static final java.lang.String STATE_SAVING_METHOD_SERVER

        Constant value for the initialization parameter named by the STATE_SAVING_METHOD_PARAM_NAME that indicates state saving should take place on the server.

        See Also:
        Constant Field Values
    • Constructor Detail

      • StateManager

        public StateManager()
    • Method Detail

      • writeState

        public void writeState​(FacesContext context,
                               java.lang.Object state)
                        throws java.io.IOException

        Save the state represented in the specified state Object instance, in an implementation dependent manner.

        This method will typically simply delegate the actual writing to the writeState() method of the ResponseStateManager instance provided by the RenderKit being used to render this view. This method assumes that the caller has positioned the ResponseWriter at the correct position for the saved state to be written.

        Parameters:
        context - FacesContext for the current request
        state - the state to be written
        Throws:
        java.io.IOException - when an I/O error occurs.
        Since:
        1.2
      • isSavingStateInClient

        public boolean isSavingStateInClient​(FacesContext context)

        Method to determine if the state is saved on the client.

        Parameters:
        context - the Faces context.
        Returns:
        true if and only if the value of the ServletContext init parameter named by the value of the constant STATE_SAVING_METHOD_PARAM_NAME is equal (ignoring case) to the value of the constant STATE_SAVING_METHOD_CLIENT. false otherwise.
        Throws:
        java.lang.NullPointerException - if context is null.