私は現在、いくつかのサーバー側のメソッドを使用して(グループとして)いくつかのフロントエンド値を検証しようとしていますが、結果を処理する際に問題が発生しています。
すべてを開始するボタンの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」属性のalert(data)がデータが未定義であることを示していることです。警告ダイアログを表示するかどうかを知るために、これを定義する必要があります。
Bean.shouldBeConfirmed()メソッドが実際に実行されており、正しいパラメーターを使用して、正しい値を返し、Bean.booleanResult変数(通常のJavaブール値)の値を設定していることを確認できます。私はここで何が間違っているのですか?