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