Java JSF2中的AjaxBehaviorEvent与ActionEvent

Java JSF2中的AjaxBehaviorEvent与ActionEvent,java,jsf,jakarta-ee,richfaces,ajax4jsf,Java,Jsf,Jakarta Ee,Richfaces,Ajax4jsf,最近,我一直在尝试将我正在开发的这个应用程序从JSF 1.2升级到JSF 2,在这个过程中,我遇到了一个难题,您可能已经知道AjaxBehaviorEvent对JSF来说是全新的,回到JSF 1.2,使用RichFaces 3,我能够做到以下几点: 在支持bean中具有单个方法的签名 public void onSomeEvent(ActionEvent evt){ //Process the event } 我可以在以下两个位置调用这个方法,如下所示 一,- 二,- 现在在J

最近,我一直在尝试将我正在开发的这个应用程序从JSF 1.2升级到JSF 2,在这个过程中,我遇到了一个难题,您可能已经知道AjaxBehaviorEvent对JSF来说是全新的,回到JSF 1.2,使用RichFaces 3,我能够做到以下几点:

在支持bean中具有单个方法的签名

public void onSomeEvent(ActionEvent evt){
    //Process the event
}
我可以在以下两个位置调用这个方法,如下所示 一,-


二,-


现在在JSF2中有两种类型的事件——旧的ActionEvent和新的AjaxBehaviorEvent,两者似乎都不能互换,我的意思是,如果我要将该方法与f:ajax一起使用,那么它需要在其参数列表中包含AjaxBehaviorEvent,如果我要将它用于组件的普通DHTML事件,那么它需要在参数列表中有一个ActionEvent

我想知道是否有什么方法可以像我在JSF2中那样处理这两种类型的事件


谢谢大家。

我确实按照@maple_shaft的建议使用了EL 2.2解决了这个问题,我所做的是从我没有使用过的方法中删除了ActionEvent参数。

如果您也使用了EL 2.2,那么您根本不需要任何事件参数。如果您不想引入AjaxBehavior,即使您的问题令人困惑,您也可以在适当的情况下继续使用ActionEvent,或者不使用event。
根本不支持
oncomplete
属性。你确定你的意思不是
?即使如此,
oncomplete
属性也不应该引用JSF操作方法,而应该引用一个简单的JavaScript处理程序。
<h:commandButton actionListener="#{bean.onSomeEvent}" value="Process Event"/>
<h:commandButton value="Process Event" >
    <a4j:support event="oncomplete" actionListener="#{bean.onSomeEvent}" />
</h:commandButton>