我在bean中创建了一个方法
public void checkSessionLife() {
if (FacesContext.getCurrentInstance().getExternalContext().getSession(false)==null) {
System.out.println("*\n");
System.out.println("destroyed");
FacesContext.getCurrentInstance().addMessage("sessiongr", new FacesMessage(FacesMessage.SEVERITY_INFO, "erer", "errrrrrrrrr"));
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update(Arrays.asList("hreaderForm:sessiongr"));
}
}
并在我的PgTemlate.xhtml
我添加<p:poll>
来更新<p:growl>
<p:poll interval="5" listener="#{accessBean.checkSessionLife()}" process="@this" global="false"/>
<p:growl id="sessiongr" showDetail="true" sticky="true"/>
问题是该活动被视为<p:poll>
个活动会话
他有另一种通知用户的方法吗?
答案 0 :(得分:0)
accessBean的范围是什么?如果它比应用程序范围小,我相信该函数将无法运行,因为JSF找不到bean。
尽管如此,这不是处理会话到期的推荐方法。如果是首选,请参阅BalusC's method。