我目前正在尝试使用一些服务器端方法(作为一个组)验证一些前端值,并遇到处理结果的问题。
以下是启动它的按钮的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 boolean)。我在这做错了什么?