12

私は現在、いくつかのサーバー側のメソッドを使用して(グループとして)いくつかのフロントエンド値を検証しようとしていますが、結果を処理する際に問題が発生しています。

すべてを開始するボタンの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ブール値)の値を設定していることを確認できます。私はここで何が間違っているのですか?

4

3 に答える 3

13

これは非常に古い質問ですが、Richfaces4M3でも同じ問題が発生しました。Yevによって提案されたパラメータは機能しませんでした。そのため、richfacesのJIRAと呼ばれます。それによると、これはバグです(「修正されない」モードになっているので、理由はわかりません!)。したがって、今のところ、回避策は ハンドラー ではevent.data なく 使用することです。私はテストしました、そしてそれは働きます:)dataoncomplete

于 2011-02-24T10:04:51.473 に答える
2

私はあなたのセットアップとまったく同じようにそれを持っています、そしてそれは私のために働きます。唯一の違いは、jsFunctionに追加の属性があることです。

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

そして私のデータ(あなたのbooleanResult)はintです。正常に動作します。

于 2010-07-09T20:44:52.380 に答える
1

私も同じ問題に直面しています..ブール結果の場合、ゲッターを削除する代わりに完全なメソッド名を記述する必要があります...あなたの場合のように、それは #{Bean.isBooleanResult} でなければなりません.... ...

于 2010-09-08T10:54:48.770 に答える