Как правильно получить доступ к полю данных в результате a4j:jsFunction

Я в настоящее время пытаюсь проверить некоторые значения фронтенда с некоторыми методами серверной стороны (как группа) и сталкиваюсь с проблемами, имеющими дело с результатом.

Вот XHTML для кнопки, которая запускает все это:

<h:commandButton action="#{Bean.save()}" 
        value="Save" 
           id="save" 
      onclick="checkForConfirmation();" />

И JavaScript, часть которого кнопка звонит, другую часть которого jsFunction звонит

function checkForConfirmation()
{
         var name = document.getElementById("path:to:name").value;
         var address = document.getElementById("path:to:address").value;
         var city = document.getElementById("path:to:city").value;
         var state = document.getElementById("path:to:state").value;
         var zip = document.getElementById("path:to:zip").value;

         jsFunc1(name, address, city, state, zip);
}
function showConfirmPrompt()
{
            if(confirm('Confirmation before save')) 
            {
                return true;
            }

            return false; 
}

И наконец, jsFunction, который является проблематичной частью:

<a4j:form>
        <a4j:jsFunction name="jsFunc1" action="#{Bean.shouldBeConfirmed()}" data="#{Bean.booleanResult}" oncomplete="alert(data); if (data) {showConfirmPrompt();}">
            <a4j:actionparam name="param1" assignTo="#{Bean.nameToBeValidated}"/>
            <a4j:actionparam name="param2" assignTo="#{Bean.addressToBeValidated}"/>
            <a4j:actionparam name="param3" assignTo="#{Bean.cityToBeValidated}"/>
            <a4j:actionparam name="param4" assignTo="#{Bean.stateToBeValidated}"/>
            <a4j:actionparam name="param5" assignTo="#{Bean.zipToBeValidated}"/>
        </a4j:jsFunction>
    </a4j:form>

Проблема состоит в том, что к концу этой цепочки событий предупреждение (данные) в атрибуте 'oncomplete' показывает, что данные не определены. Мне нужно это, чтобы быть определенным, чтобы знать, показать ли диалог предупреждения.

Я могу подтвердить, что Bean.shouldBeConfirmed () метод действительно работает, и с правильными параметрами, и действительно возвращает правильное значение и даже устанавливает значение переменной Bean.booleanResult (который является нормальной булевской переменной Java). Что я делаю неправильно здесь?

12
задан pnuts 14 November 2015 в 11:19
поделиться

1 ответ

У меня все точно так же, как у вас, и это работает для меня. Единственная разница в том, что у меня есть дополнительные атрибуты на jsFunction:

    <a4j:form>
    <a4j:jsFunction name="jsFunc1" 
        action="#{Bean.shouldBeConfirmed()}" 
        data="#{Bean.booleanResult}" 
        oncomplete="alert(data);"
        ignoreDupResponses="true"
        eventQueue="foo">
        ...

И мои данные (ваш booleanResult) - это int. Работает нормально.

2
ответ дан 2 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: