0

我有一个使用 RichFaces 和 jsf 的页面,我添加了一些 jstl 代码来验证 bean 中的某些内容,当会话超时时正在验证此代码,这会触发一些异常,代码是:

<c:if test="#{ViewerController.viewerBean.canCountMessages}" >
    <td>
        <a4j:commandButton value="count" action="#{ViewerController.doCount}" />
    </td>
</c:if>

因此此代码得到验证并引发以下异常:

/pages/viewer/index.xhtml @43,67 test="#{ViewerController.viewerBean.canCountMessages}" An error occurred performing resource injection on managed bean ViewerController

有没有办法防止在会话无效时验证 c:if 标记

注意: ViewerController 类是 SessionScoped 。

4

1 回答 1

1

我能够为此找到解决方法,它可能会帮助遇到类似问题的人,

好吧,我在用户登录后在会话中保存了一些变量,并查询该变量是否存在于 c:if 语句中,如:

在 Web 应用程序中登录用户时:

 FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("SessionValid",true); 

并在 ViewerController 类中添加了这个方法:

boolean isSessionValid(){
    return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SessionValid") !=  null ;
}

我的代码是这样的:

<c:if test="#{ViewerController.sessionValid and ViewerController.viewerBean.canCountMessages}" >
    <td>
        <a4j:commandButton value="count" action="#{ViewerController.doCount}" />
    </td>
</c:if>
于 2013-02-19T11:44:10.893 回答