【发布时间】:2015-01-21 16:23:08
【问题描述】:
在一个 jsf(Mojarra 2.1) 应用程序中,我从下面的 sessionbean 中调用一个布尔值。 一切正常,直到我使用 session.invalidate 注销并重新登录。 新登录后,getter 和 setter 的 detailView 的值是不同的。这意味着:
- 调用setter方法,将detailView的值设置为 是的。
- 之后,调用 getter 方法,并在客户端为 详细查看收到的值“false”!!
您也可以通过这些输出线看到这一点:
System.out.println("getdetailView:" + detailView + ": " + sessionId )
和
System.out.println("setdetailView:" + detailView + ": " + sessionId );
当我比较两个方法调用的 sessionIds 时,我们可以看到两个方法具有相同的 sessionId。
@ManagedBean(name = "sessionBean")
@SessionScoped
public class SessionBean implements Serializable {
…
private boolean detailView = false;
public boolean isDetailView() {
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
String sessionId = session.getId();
System.out.println("getdetailView:" + detailView + ": " + sessionId );
Return detailView;
}
public void setDetailView(final boolean detailView) {
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
String sessionId = session.getId();
System.out.println("setdetailView:" + detailView + ": " + sessionId );
this.detailView = detailView;
}
在jsf中,值是这样调用的:
<p:inputText rendered="#{sessionBean.detailView} value="bla"/>
看起来,getter 和 setter 绑定到不同的数据源,但这怎么可能呢?
感谢任何帮助。提前致谢。
【问题讨论】:
-
什么设置
detailView的值?
标签: jsf-2