我想问一下我是否将我的托管bean放在会话范围内,然后将它存储在会话中"就像我有这样的bean一样
@ManagedBean
@SessionScoped
public class SessionScopedBean implements Serializable {
.......
} //end of class SessionScopedBean
Run Code Online (Sandbox Code Playgroud)
然后它存储在会话中,在我的会话期间我可以使用它
session.getAttribut("SessionScopedBean");
Run Code Online (Sandbox Code Playgroud)
这将给我SessionScopedBean对象,当会话将被销毁时,我将得到null.现在我想问一下我的bean是否在视野范围内,那我怎么能得到它.喜欢
@ManagedBean
@ViewScoped
public class ViewScopedBean implements Serializable {
.......
} //end of class ViewScopedBean
Run Code Online (Sandbox Code Playgroud)
现在如果视图是持久化的,那么这个bean处于视图状态,当视图发生变化时,这个bean将会被破坏.现在我想问一下,如果视图仍然存在,我怎样才能从视图状态获取这个bean.喜欢
view.getAttrubute("ViewScopedBean"); //just a code. No actual implementation.
Run Code Online (Sandbox Code Playgroud)
谢谢
Bal*_*usC 22
它们存储在视图中,如下所示UIViewRoot#getViewMap():
Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
ViewScopedBean viewScopedBean = (ViewScopedBean) viewMap.get("viewScopedBean");
// ...
Run Code Online (Sandbox Code Playgroud)
同样地,您应该使用会话映射抽象,它可以使用ExternalContext#getSessionMap()(您最终希望在整个JSF代码中都有零 javax.servlet导入声明):
Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
SessionScopedBean sessionScopedBean = (SessionScopedBean) sessionMap.get("sessionScopedBean");
// ...
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,这可能不是最好的方法.看看@ManagedProperty是否可能.