Mojarra 2.1 中的 ViewState 解码
ViewState decoding in Mojarra 2.1
Mojarra 2.1
我正在尝试找到 javax.faces.ViewState
参数被解码为 Map-like 结构的位置。在 UIComponent
摘要 class 中,我没有找到与 RestoreView 阶段相关的接受字符串作为 parameter
的方法。方法
public void restoreTransientState(FacesContext context, Object state)
{
boolean forceCreate = (state != null);
TransientStateHelper helper = getTransientStateHelper(forceCreate);
if (helper != null) {
helper.restoreTransientState(context, state);
}
}
据我所知,接受已经解码的视图状态并检索之前保存的特定组件的状态。
这取决于状态保存方法(服务器 vs 客户端)。
在客户端状态保存的情况下,解码javax.faces.ViewState
请求参数的逻辑位于com.sun.faces.renderkit.ClientSideStateHelper#getState()
and subsequently doGetState()
。
在服务器端状态保存的情况下,使用 javax.faces.ViewState
请求参数表示的标识符从会话中获取和解码状态对象的逻辑位于 com.sun.faces.renderkit.ServerSideStateHelper#getState()
.
无论哪种方式,摘要 API 都由 ResponseStateManager#getState()
which is called in StateManagementStrategy#restoreView()
which in turn is called during ViewHandler#restoreView()
表示。前面链接的 javadocs 详细描述了这个过程。
Mojarra 2.1
我正在尝试找到 javax.faces.ViewState
参数被解码为 Map-like 结构的位置。在 UIComponent
摘要 class 中,我没有找到与 RestoreView 阶段相关的接受字符串作为 parameter
的方法。方法
public void restoreTransientState(FacesContext context, Object state)
{
boolean forceCreate = (state != null);
TransientStateHelper helper = getTransientStateHelper(forceCreate);
if (helper != null) {
helper.restoreTransientState(context, state);
}
}
据我所知,接受已经解码的视图状态并检索之前保存的特定组件的状态。
这取决于状态保存方法(服务器 vs 客户端)。
在客户端状态保存的情况下,解码javax.faces.ViewState
请求参数的逻辑位于com.sun.faces.renderkit.ClientSideStateHelper#getState()
and subsequently doGetState()
。
在服务器端状态保存的情况下,使用 javax.faces.ViewState
请求参数表示的标识符从会话中获取和解码状态对象的逻辑位于 com.sun.faces.renderkit.ServerSideStateHelper#getState()
.
无论哪种方式,摘要 API 都由 ResponseStateManager#getState()
which is called in StateManagementStrategy#restoreView()
which in turn is called during ViewHandler#restoreView()
表示。前面链接的 javadocs 详细描述了这个过程。