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