2012-07-31 24 views
3

最近我一直在嘗試將我正在從JSF 1.2開發的應用程序升級到JSF 2,並且在這個過程中我碰到了一堵牆,因爲您可能已經知道AjaxBehaviorEvent是全部新JSF,並早在JSF 1.2,並使用RichFaces的3我是能夠做到以下幾點:JSF2中的AjaxBehaviorEvent vs ActionEvent

在支持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有兩種類型的事件的舊動作事件和新AjaxBehaviorEvent既不似乎與其他互換工作,我的意思是,如果我使用該方法f:ajax,那麼它需要在其參數列表中包含AjaxBehaviorEvent,如果我要將它與組件的普通DHTML事件一起使用,那麼它需要在參數列表中包含一個ActionEvent。

我想知道是否有某種方式使用例如做什麼,我在使用JSF 2這兩種類型的事件做。

謝謝大家。

+2

如果您也使用EL 2.2,那麼您根本不需要任何事件參數。如果不想引入AjaxBehaviorEvent – 2012-07-31 11:13:10

+1

您可以繼續在適當的地方使用ActionEvent或者不使用事件您的問題很混亂。 ''完全不支持'oncomplete'屬性。你確定你實際上並不意味着''?即使如此,'oncomplete'屬性也不應該引用JSF操作方法,而應該引用一個簡單的JavaScript處理程序。 – BalusC 2012-07-31 11:23:29

回答

3

我已經設法通過使用EL 2.2來解決這個問題,正如@maple_shaft所建議的,我所做的是將ActionEvent參數從我沒有使用它的方法中移除。