1

我正在尝试将 Drools-Guvnor 独立编辑器集成到我的 spring-webflow-jsf-richfaces 应用程序中。我在 iframe 中(在richfaces-modalpanel 内)显示 guvnor 编辑器。根据文档,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 回答