【发布时间】:2011-10-09 17:38:32
【问题描述】:
我正在处理一个 JSF 2.0 项目,并且正在学习使用系统事件的好处。但是,我引用的书'Core Java Server Faces 3rd Edition' 总共列出了 14 种系统事件类型,可以在 f:event 标签的 type 属性中使用。其中一些按我的预期工作,例如UIComponent 标签上的“preRenderComponent”,或 UIViewRoot 标签上的“preRenderView”。但是,除了这两个,以及其他几个,书中提到的其他事件都不起作用。例如,我无法让 postRestoreState 类型的事件在 UIComponent 上工作。相反,当 JSF 尝试呈现页面时,我得到了一个 ClassNotFound 异常,可能是系统事件类应该处理 postRestoreState 事件,或者我试图监听的任何事件。
为什么这些其他事件类型不起作用?是否有我需要的其他库,或者是否有其他方式来实现我需要使用的系统事件侦听器。下面是一个这样的标签失败的例子:
<h:commandLink
action="editPlant"
value="#{appMessages.UsersNavigationAddPlant}"
styleClass="#{userSession.selectedStyle}"
>
<f:event type="postRestoreState" listener="#{userSession.setSelectedStyle()}" />
</h:commandLink>
【问题讨论】: