2011-11-20 34 views
1

爲了減少狀態,我試圖減少我的網頁上的命令按鈕的數量(我有大量的commandButtons顯示在20個項目(6 * 20 = 120 commandButtons))。因此,我試圖找出一種方法,通過javascript,我可以通過參數&調用ManagedBean控制器類中的操作方法。有沒有什麼辦法從javascript &傳遞動作方法傳遞參數?通過javascript調用控制器託管bean中的操作方法

回答

3

RichFaces的3.2.0.GA和XHTML作爲標記

您可以使用JavaScript來調用A4J:JS方法,它inturn從託管bean調用操作方法。 您需要傳遞的參數可以設置爲一個隱藏變量,當它被設置時會將值設置爲bean中的java變量。

<script> 
function onButtonClick(){ 
    $("#yourValue").val("value"); 
    actionListenerMethod(); 
} 
</script> 

<a4j:jsFunction name="actionListenerMethod" 
    actionListener="#{yourManagedBean.actionMethod}" 
    oncomplete="scriptOnComplete();"> 
</a4j:jsFunction> 

<h:inputHidden id="yourValue" 
    value="#{yourManagedBean.yourValue}" /> 

管理的bean:

public void actionMethod(ActionEvent event){ 
    if(yourValue == "something"){ 
     /*your action goes here*/ 
    } 
} 

否則,您可以通過使用動作PARAM

<script> 
    function onButtonClick(){ 
     actionListenerMethod("value"); 
    } 
</script> 

<a4j:jsFunction name="actionListenerMethod" 
    actionListener="#{yourManagedBean.actionMethod}" 
    oncomplete="scriptOnComplete();"> 
    <a4j:actionparam name="param1" 
     assignTo="#{yourManagedBean.yourValue}" /> 
</a4j:jsFunction> 

的繞過這個隱藏變量在後一種情況的動作PARAM可能會設置只有在管理bean完成之後,在這種情況下,您可以使用Action atribute來調用您的操作方法,而不是操作偵聽器。 這將幫助您設置參數,然後調用操作方法。

<a4j:jsFunction name="actionListenerMethod" 
    action="#{yourManagedBean.actionMethod}" 
     oncomplete="scriptOnComplete();"> 
     <a4j:actionparam name="param1" 
      assignTo="#{yourManagedBean.yourValue}" /> 
</a4j:jsFunction> 
相關問題