В настоящее время я пытаюсь проверить некоторые значения 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). Что я здесь делаю неправильно?