【发布时间】:2013-02-19 10:02:40
【问题描述】:
我有一个使用 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 。
【问题讨论】:
-
您问题中的术语非常混乱。此异常不是由代码上的某些验证错误引起的。它只是由您自己的代码中的错误引起的。请在堆栈跟踪中查找根本原因以了解异常的根本原因。另外,您问题上的
[jsp]标记也令人困惑,因为您似乎根本没有使用 JSP。 -
这是我的错误,没有说得更清楚,我所要求的是,当会话因超时而无效时,为什么 c:if 测试语句得到验证和执行,ViewerController 的调用.viewerBean.canCountMessages 由于某些(可能与会话相关)被调用的代码而崩溃,并且它可能会测试存储在会话本身中的某些对象,我要求的是我可以做类似
,这可能会解决这个问题。 -
不,您的问题是由 bean 中的资源注入问题引起的,正如顶部异常消息所说的那样。只需在堆栈跟踪中查找此问题的根本原因。例如。
NullPointerException左右。然后根据该信息相应地修复代码。 -
问题是我能够知道错误的根本原因是什么,在 ViewerController 托管 bean 的初始化中,我正在查询会话中保存的一些变量并假设它确实存在,但是当超时发生时为什么它会再次尝试重新验证页面,我正在使用一些 Richfaces a4j 标签,它不会评估其中的 EL,但是 jstl c:if 语句确实如此,也许就是这样它的工作方式就是这样,或者我可能有一些我不知道的配置问题。