jstl在导致异常的超时时验证c:if



我有一个使用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。

我能够找到一个解决方法,它可能会帮助有类似问题的人,

好吧,在用户登录后,我在会话中保存了一些变量,并询问这个变量是否存在于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>

相关内容

  • 没有找到相关文章