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