Jsf 通过javascript在控制器管理的bean中调用操作方法

Jsf 通过javascript在控制器管理的bean中调用操作方法,jsf,Jsf,为了减少状态,我正在尝试减少我的网页上commandButtons的数量。(我在20个项目的长列表下显示了大量commandButtons(6*20=120个commandButtons))。因此,我试图找到一种方法,通过javascript,我可以传递参数&调用ManagedBean控制器类中的action方法。有没有办法从javascript调用动作方法并将参数传递给它们?Richfaces 3.2.0.GA和XHTML作为标记 您可以使用javascript调用a4j:js方法,intur

为了减少状态,我正在尝试减少我的网页上commandButtons的数量。(我在20个项目的长列表下显示了大量commandButtons(6*20=120个commandButtons))。因此,我试图找到一种方法,通过javascript,我可以传递参数&调用ManagedBean控制器类中的action方法。有没有办法从javascript调用动作方法并将参数传递给它们?

Richfaces 3.2.0.GA和XHTML作为标记

您可以使用javascript调用a4j:js方法,inturn从托管bean调用action方法。 您需要传递的参数可以设置为一个隐藏变量,当设置该变量时,它会将值设置为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}" />
否则,您可以使用action 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>

函数onButtonClick(){
actionListenerMethod(“值”);
}
在后一种情况下,操作参数可能只有在管理bean完成后才能设置,在这种情况下,您可以使用action atribute来调用您的操作方法,而不是操作侦听器。 这将帮助您设置参数,然后调用操作方法

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

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