【问题标题】:AjaxBehaviorEvent vs ActionEvent in JSF2JSF2 中的 AjaxBehaviorEvent 与 ActionEvent
【发布时间】:2012-07-28 23:42:36
【问题描述】:

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

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

public void onSomeEvent(ActionEvent evt){
    //Process the event
}

我可以在以下两个位置调用此方法,如下所示 1-

<h:commandButton actionListener="#{bean.onSomeEvent}" value="Process Event"/>

2-

<h:commandButton value="Process Event" >
    <a4j:support event="oncomplete" actionListener="#{bean.onSomeEvent}" />
</h:commandButton>

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

我想知道是否有某种方法可以使用,例如我在 JSF 2 中对这两种类型的事件所做的事情。

谢谢大家。

【问题讨论】:

  • 如果您也在使用 EL 2.2,那么您根本不需要任何事件参数。如果您不想引入 AjaxBehaviorEvent,您可以在适当的情况下继续使用 ActionEvent 或不使用任何事件
  • 您的问题令人困惑。 &lt;h:commandButton&gt; 根本不支持 oncomplete 属性。你确定你的意思不是&lt;a4j:commandButton&gt;?即使这样,oncomplete 属性也不应该引用 JSF 操作方法,而是一个简单的 JavaScript 处理程序。

标签: java jsf jakarta-ee richfaces ajax4jsf


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2021-04-02
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多