2014-09-23 89 views
0

我想實現一個自定義的JS2命令按鈕使用UICommand與最新的HTML5屬性。但是,我可以如何處理action和actionListener屬性? UICommand會保存這些值,這是由JSF2運行時完成的,但是我怎麼能確切地知道在'encodeBegin methode'的渲染器類中的用戶按鈕激活之後應該執行哪個bean的哪種方法。 PrimeFaces commandButon渲染器類的源代碼可用here很複雜。創建一個自定義命令按鈕和輸入組件

+0

感謝BalusC的幫助,「我如何處理使用Jquery,Ajax和JSF2的CommandButton動作」,這真的是我正在尋找的。 – farouk 2014-09-26 12:04:22

回答

0

在我看來,你需要擴展那個類(CommandButton或CommandButtonRendered),並且正確地覆蓋那些不能正常工作的方法。像這樣CommandButtonRenderer:

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import org.primefaces.component.commandbutton.CommandButtonRenderer; 

/** 
* 
* @author nuno_marinho 
*/ 
public class MyCommandButtonRenderer extends CommandButtonRenderer { 

    @Override 
    ... 

} 

或類似這樣的命令按鈕:

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import org.primefaces.component.commandbutton.CommandButtonRenderer; 
import org.primefaces.component.commandbutton.CommandButton; 

/** 
* 
* @author nuno_marinho 
*/ 
public class MyCommandButton extends CommandButton { 

    @Override 
    ... 

} 

最後,你需要定義faces-config.xml中的分量的變化是這樣的:

<render-kit> 
    <renderer> 
     <component-family>org.primefaces.component</component-family> 
     <renderer-type>org.primefaces.component.CommandButton</renderer-type> 
     <renderer-class>com.yourpackage.commandButton.MyCommandButton</renderer-class> 
    </renderer> 
</render-kit> 

我希望這個解釋可以幫助你!

+0

感謝Nuno的幫助。我正在尋找一種方法來從Web開發人員指定的關聯EL中獲取action&actionListener屬性的值。UICommand JSF2組件處理該任務嗎? – farouk 2014-09-24 13:01:19

+0

然後,如何調用EL中的值以在調用應用程序階段期間調用該方法? JSF運行時是否負責調用action&actionListener屬性中指定的方法? – farouk 2014-09-24 13:11:44

+0

我可以在JSF規範中實現HTML5按鈕;使用UIcommand,但我的問題是,我怎麼能在渲染階段處理按鈕的操作。 對於PrimeFaces,它使用'PF.ab(source,event,update); return false;'這個解決方案如何將bean和方法ID傳遞給jsf運行時? – farouk 2014-09-24 13:13:46