2013-02-19 49 views
1

我將傳統項目轉換爲更現代的庫版本。 舊版本使用了以下的Ajax4jsf代碼:遷移到RichFaces 4:HtmlAjaxCommandLink - > UICommandButton

HtmlAjaxCommandLink link = new HtmlAjaxCommandLink() 
link.addAjaxListener(new AjaxListener() { 
    @Override 
    public void processAjax(AjaxEvent event) { } 
}); 

根據該文件,HtmlAjaxCommandLink在RichFaces的4

雖然被替換UICommandLink,我似乎無法罰款更換爲addAjaxListener爲控件。

它可以替換什麼?

回答

4

由於JSF2,ajax已被JSF API標準化。所有支持客戶行爲的組件都應該實現ClientBehaviorHolder,這反過來提供了addClientBehavior()方法來添加客戶端行爲。 ajax的具體客戶行爲實現是AjaxBehavior,它反過來提供了addAjaxBehaviorListener()方法,這正是你正在尋找的。

所有的一切,在您的特定情況下,可以更換如下:

UICommandLink link = new UICommandLink(); // Note: you can also just use standard JSF HtmlCommandLink. 
link.setId("linkId"); // Fixed ID is mandatory for successful processing. 
link.setValue("click here"); // Not sure if you need it. Just to be complete. 
AjaxBehavior ajaxAction = new AjaxBehavior(); 
ajaxAction.addAjaxBehaviorListener(new AjaxBehaviorListener() { 
    @Override 
    public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException { 
     System.out.println("Ajax behavior listener invoked."); // Do your actual job jere. 
    } 
}); 
link.addClientBehavior("action", ajaxAction); // Note: don't use "click" event! 
+0

我有一個很難找到的AjaxBehavior,AjaxBehaviorEvent,AbortProcessingException進口。任何機會,你可以從代碼複製粘貼這些導入?謝謝! – UrK 2013-02-19 21:07:54

+0

點擊鏈接。他們都指向javadoc。或者只需在Eclipse中按Ctrl + Shift + O,並根據需要從'javax.faces'包中挑選。 – BalusC 2013-02-19 21:15:37