1

Drools-Guvnor スタンドアロン エディターを spring-webflow-jsf-richfaces アプリケーションに統合しようとしています。iframe (richfaces-modalpanel 内) に guvnor-editor を表示しています。ドキュメントに従って、guvnor は、親アプリケーションが通信するためのコールバック関数とともに JavaScript オブジェクトを公開します。

    var guvnorEditorObject = {
    getDRL: function (callbackFunction),
    getBRL: function (callbackFunction),
    registerAfterSaveAndCloseButtonCallbackFunction: function (callbackFunction),
    registerAfterCancelButtonCallbackFunction: function (callbackFunction),
    getAssetsUUIDs: function()
}

私の質問は、これらのコールバック関数をjsfページ内に登録するにはどうすればよいですか? たとえば、ユーザーが閉じるボタンをクリックすると、モーダル パネル ウィンドウを閉じたいとします。サンプルコードは私にとって本当に役に立ちます。

4

1 に答える 1

1

javascript setTimeout 関数を使用して、この問題を解決することができました。

根本的な問題は、guvnorEditorObject が動的に作成されたため、iframe の即時読み込みでは使用できないことでした。

これは、iframe のロード時に呼び出されるコードです。

        function register() {
        var guvnorEditorObject = window.document.getElementById('myIframe').contentWindow.guvnorEditorObject;
        if(guvnorEditorObject){
            //guvnorEditorObject.getDRL(function(drl){alert('drl: '+drl);})
            //guvnorEditorObject.getBRL(function(brl){alert('brl: '+brl);})
            guvnorEditorObject.registerAfterSaveAndCloseButtonCallbackFunction(function(){guvnorEditorObject.getDRL(function(drl){alert('drl: '+drl);window.close();})});
            guvnorEditorObject.registerAfterCancelButtonCallbackFunction(function(){alert('Cancel button clicked');});              
            //alert(guvnorEditorObject.getAssetsUUIDs());       
        }else{
             setTimeout(register,250);
        }
    }
于 2012-11-14T09:05:46.103 に答える