我不知道是否可以使用 f:event 使用自定义事件。Ed Burns 的书建议将 @NamedEvent 注释添加到 Event 类并使用:
<f:event type="com.foo.bar.myEvent" listener="#{listener} />
Run Code Online (Sandbox Code Playgroud)
但该事件似乎永远不会被实例化。
从我的角度来看,这是有道理的,因为组件对事件一无所知,例如何时发布,因此这可能仅对自定义组件作者有用。
另一方面,如果从 PostAddToViewEvent 派生,标准组件应该能够发布事件。无论如何,标准组件似乎永远不会发布自定义事件。
我错过了什么吗?是否有一种方便的方法可以将自定义事件与标准组件一起使用?
这是我想做的:
<h:inputText id="input">
<f:event type="foo.bar.MyCustomEvent" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
public class MyCustomEvent extends javax.faces.event.PostAddToViewEvent {
}
Run Code Online (Sandbox Code Playgroud)