Вызовите методы действия в управляемых компонентах контроллера через JavaScript - PullRequest
1 голос
/ 21 ноября 2011

Чтобы уменьшить состояние, я пытаюсь уменьшить количество командных кнопок на своих веб-страницах (у меня большое количество командных кнопок не отображалось в длинном списке из 20 элементов (6 * 20 = 120 командных кнопок)). Таким образом, я пытаюсь найти способ через javascript, с помощью которого я могу передавать параметры и вызывать методы действия в классах контроллера ManagedBean. Есть ли способ вызвать методы действия из JavaScript и передать им параметры?

1 Ответ

3 голосов
/ 21 ноября 2011

Richfaces 3.2.0.GA и XHTML как разметка

Вы можете использовать javascript для вызова метода a4j: js, который inturn вызывает метод действия из управляемого компонента. Параметр, который вам нужно передать, может быть установлен в скрытую переменную, которая при установке установит значение переменной 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}" />

Управляемый компонент:

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

В противном случае вы можете обойти эту скрытую переменную с помощью параметра действия

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

<a4j:jsFunction name="actionListenerMethod" 
    actionListener="#{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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...