0

アプリケーションの多くの部分でカスタムイベントハンドラーを使用しています。ティム・トリプコニーは彼のブログでこれを説明しています...彼はおそらく(うまくいけば)これに答えるでしょう...

私のコードのイベントハンドラーは次のようになります。

    <xp:eventHandler
        id="newbsDoSomething"
        submit="true"
        event="calledbyid"
        refreshMode="complete">
        <xp:this.action>
            <![CDATA[#{javascript:doSomethingFromSomewhere();}]]>
        </xp:this.action>
    </xp:eventHandler>

ボタンまたはその他のコントロールは、次のようなコードでこれらのイベントを実行します。

XSP.partialRefreshPost(("#{id:newbsDoSomething}", {
    params : {
        '$$xspsubmitvalue' : 'something that tells it what to do.'
    },
    onError : function(err) {
            alert('Whatever this method is doing got an error...');
            //I want to report the error here
    },
    onComplete : function() {
        // maybe do something else
    })
});

私がミスをしたとき(ブルームーンに一度)、AJAXリクエストへの応答にスタックトレースが含まれています。オプションでスタックトレースを別のページにレンダリングするボタンを配置したいと思います。

onErrorメソッドでは、エラーが定義されていないため、役に立ちません。応答を含むXSPオブジェクトのプロパティが表示されません。Firebugコンソールで応答を確認できますが、実際にどのように取得すればよいですか?

/ Newbs

4

1 に答える 1

4

問題は、CSJS関数XSP._partialRefreshonErrorパラメーターが関数であるかどうかをチェックすることです。関数の場合、必要なパラメーターなしで呼び出されます。

ただし、代わりに文字列を使用すると、evalが実行されるため、次のようなことが可能になります。

function myErrHandler(){
    // just do some debugging
    // of ioArgs object 
    var arg = arguments[1];
    var txt = "";
    for( p in arg ){
        txt += p + " -> " + arg[p] + " [" + typeof( arg[p] ) + "]\n";
    }
    alert( txt );
}

XSP.partialRefreshPost("#{id:newbsDoSomething}", {
    onError : 'myErrHandler( arguments[0], arguments[1] )'
});

お役に立てれば

スヴェン

于 2012-07-10T10:59:55.620 に答える