我正在尝试将Drools-Guvnor独立编辑器集成到我的spring-webflow-jsf-richfaces应用程序中。 我在iframe中显示guvnor-editor(在richfaces-modalpanel内)。 根据文档,guvnor公开了一个javascript对象以及父应用程序进行通信的回调函数
var guvnorEditorObject = {
getDRL: function (callbackFunction),
getBRL: function (callbackFunction),
registerAfterSaveAndCloseButtonCallbackFunction: function (callbackFunction),
registerAfterCancelButtonCallbackFunction: function (callbackFunction),
getAssetsUUIDs: function()
}
现在我的问题是如何在jsf页面中注册这些回调函数? 例如,如果用户单击关闭按钮,我想关闭模式面板窗口。 示例代码对我很有帮助。
答案 0 :(得分: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);
}
}