有没有办法从CCSJ或SSJS触发enableModifiedFlag背后的代码?

PSo*_*ano 4 xpages

如果我在自定义控件上将enableModifiedFlag属性设置为true; 我在生成的页面源代码的底部看到以下代码.

当用户远离更改页面时,一切正常; 他们收到"未保存数据"的警报消息

<script type="text/javascript"> 

function view__id1__id2__id95__id98__id105_clientSide_onclick(thisEvent) {
return validateForm();

}

XSP.attachDirtyUnloadListener("This document may contain unsaved changes.");

XSP.addOnLoad(function() {
XSP.attachEvent("view:_id1:saveActionEventHandler", "view:_id1", "ondirtysave", null, true, 2);
XSP.attachEvent("view:_id1:_id2:_id95:_id98:_id105", "view:_id1:_id2:_id95:_id98:link1", "onclick", view__id1__id2__id95__id98__id105_clientSide_onclick, true, 2);
XSP.attachEvent("view:_id1:_id2:_id95:_id98:_id106", "view:_id1:_id2:_id95:_id98:link2", "onclick", null, true, 2);
XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:businessName11");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:businessName21");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:address11");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:address21");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:city1");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:cbState");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:zipCode1");

XSP.attachDirtyListener("view:_id1:_id2:_id95:_id98:phoneNumber1");

}); 

</script>
Run Code Online (Sandbox Code Playgroud)

我有一个带有SSJS的退出按钮,如果文件被锁定,它会解锁文件并创建一个context.redirectToPage.问题是此按钮没有触发enableModifiedFlag逻辑背后的代码,因此用户离开页面时不会被提示是否要留下未保存的数据.

有没有办法使用CCSJ或SSJS从此按钮触发enableModifiedFlag后面的代码?

PSo*_*ano 6

通过XSP._isDirty()在CSJS中使用,如果修改了任何字段,则可以获得true;如果未对表单进行任何更改,则可以为false.

所以我将这段代码添加到CSJS下的按钮,以显示来自XPage的相同默认警报:

if (XSP._isDirty()){
    if (confirm ("Are you sure you want to navigate away from this page?" + "\n" + "\n" +
    "This document may contain unsaved changes." + "\n" + "\n" +
    "Press OK to continue, or Cancel to stay on the current page.")){
        return true;
    }else{
        return false;
    }
} else {
    return true;
}
Run Code Online (Sandbox Code Playgroud)