|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.faces.application.StateManager
public abstract class StateManager
Responsible for storing sufficient information about a component tree so that an identical tree can later be recreated.
It is up to the concrete implementation to decide whether to use information from the "view template" that was used to first create the view, or whether to store sufficient information to enable the view to be restored without any reference to the original template. However as JSF components have mutable fields that can be set by code, and affected by user input, at least some state does need to be kept in order to recreate a previously-existing component tree.
There are two different options defined by the specification: "client" and "server" state.
When "client" state is configured, all state information required to create the tree is embedded within the data rendered to the client. Note that because data received from a remote client must always be treated as "tainted", care must be taken when using such data. Some StateManager implementations may use encryption to ensure that clients cannot modify the data, and that the data received on postback is therefore trustworthy.
When "server" state is configured, the data is saved somewhere "on the back end", and (at most) a token is embedded in the data rendered to the user.
This class is usually invoked by a concrete implementation of ViewHandler.
Note that class ViewHandler isolates JSF components from the details of the request format. This class isolates JSF components from the details of the response format. Because request and response are usually tightly coupled, the StateManager and ViewHandler implementations are also usually fairly tightly coupled (ie the ViewHandler/StateManager implementations come as pairs).
See the javadoc for this class in the JSF Specification for more details.
Nested Class Summary | |
---|---|
class |
StateManager.SerializedView
|
Field Summary | |
---|---|
static String |
STATE_SAVING_METHOD_CLIENT
|
static String |
STATE_SAVING_METHOD_PARAM_NAME
|
static String |
STATE_SAVING_METHOD_SERVER
|
Constructor Summary | |
---|---|
StateManager()
|
Method Summary | |
---|---|
protected abstract Object |
getComponentStateToSave(FacesContext context)
Return data that can be applied to a component tree created using the "getTreeStructureToSave" method. |
protected abstract Object |
getTreeStructureToSave(FacesContext context)
Return data that is sufficient to recreate the component tree that is the viewroot of the specified context, but without restoring the state in the components. |
boolean |
isSavingStateInClient(FacesContext context)
|
protected abstract void |
restoreComponentState(FacesContext context,
UIViewRoot viewRoot,
String renderKitId)
|
protected abstract UIViewRoot |
restoreTreeStructure(FacesContext context,
String viewId,
String renderKitId)
|
abstract UIViewRoot |
restoreView(FacesContext context,
String viewId,
String renderKitId)
|
abstract StateManager.SerializedView |
saveSerializedView(FacesContext context)
Invokes getTreeStructureToSave and getComponentStateToSave, then return an object that wraps the two resulting objects. |
abstract void |
writeState(FacesContext context,
StateManager.SerializedView state)
Associate the provided state object with the current response being generated. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String STATE_SAVING_METHOD_PARAM_NAME
public static final String STATE_SAVING_METHOD_CLIENT
public static final String STATE_SAVING_METHOD_SERVER
Constructor Detail |
---|
public StateManager()
Method Detail |
---|
public abstract StateManager.SerializedView saveSerializedView(FacesContext context)
protected abstract Object getTreeStructureToSave(FacesContext context)
Using this data, a tree of components which has the same "shape" as the original component tree can be recreated. However the component instances themselves will have only their default values, ie their member fields will not have been set to the original values.
protected abstract Object getComponentStateToSave(FacesContext context)
public abstract void writeState(FacesContext context, StateManager.SerializedView state) throws IOException
When client-side state is enabled, it is expected that method writes the data contained in the state parameter to the response somehow.
When server-side state is enabled, at most a "token" is expected to be written.
IOException
public abstract UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId)
protected abstract UIViewRoot restoreTreeStructure(FacesContext context, String viewId, String renderKitId)
protected abstract void restoreComponentState(FacesContext context, UIViewRoot viewRoot, String renderKitId)
public boolean isSavingStateInClient(FacesContext context)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |