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>