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