Как правильно получить доступ к полю данных в результате a4j: jsFunction
В настоящее время я пытаюсь проверить некоторые значения front-end с помощью некоторых методов на стороне сервера (как группы), и я столкнулся с проблемами, связанными с результатом.
Вот кнопка 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 показывает, что данные undefined. Мне нужно, чтобы это было определено для того, чтобы узнать, показывать ли диалог предупреждения.
Я могу подтвердить, что метод Bean.shouldBeConfirmed() действительно работает и с правильными параметрами и действительно возвращает правильное значение и даже устанавливает значение переменной Bean.booleanResult(которая является нормальный java boolean). Что я здесь делаю неправильно?
Ответы
Ответ 1
Хотя это очень старый вопрос, у меня была такая же проблема с Richfaces 4 M3. Параметры, предложенные Ев, не сработали. Так называются richfaces JIRA.
В соответствии с этим, это ошибка (которая находится в режиме "не исправлять", не знаю почему!)
Поэтому на данный момент обходным путем является использование
event.data
вместо
data
в обработчике oncomplete
.
Я тестировал, и он работает:)
Ответ 2
У меня это точно так же, как ваша настройка, и это работает для меня. Единственное различие: у меня есть дополнительные атрибуты на jsFunction:
<a4j:form>
<a4j:jsFunction name="jsFunc1"
action="#{Bean.shouldBeConfirmed()}"
data="#{Bean.booleanResult}"
oncomplete="alert(data);"
ignoreDupResponses="true"
eventQueue="foo">
...
И мои данные (ваш booleanResult) - это int. Прекрасно работает.
Ответ 3
У меня также возникает одна и та же проблема. В случае булевых результатов нам нужно написать полное имя метода вместо удаления getter...
как в вашем случае это должно быть # {Bean.isBooleanResult}....
Дайте мне знать, если проблема с лицом...