XPages:9.0.1FP3 HF241版中启用ModifiedFlag可能存在的错误以及解决方法

XPages:9.0.1FP3 HF241版中启用ModifiedFlag可能存在的错误以及解决方法,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我有一个页面,我想使用“enableModifiedFlag”属性,让用户知道他们的编辑没有保存,如果他们想在保存之前离开页面 我在该页面中还有一个搜索框,当我将字段设置为静态值“true”时,消息会弹出,因为搜索框被视为页面的一部分,并且字段被修改。这一切都是有道理的 由于可以计算“enableModifiedFlag”属性,因此我决定仅在文档处于编辑模式时将其设置为true,因为此时搜索框不可用。我得到的行为是信息不再出现。然后我用返回true作为属性的值进行测试,结果没有改变任何东西:消息

我有一个页面,我想使用“enableModifiedFlag”属性,让用户知道他们的编辑没有保存,如果他们想在保存之前离开页面

我在该页面中还有一个搜索框,当我将字段设置为静态值“true”时,消息会弹出,因为搜索框被视为页面的一部分,并且字段被修改。这一切都是有道理的

由于可以计算“enableModifiedFlag”属性,因此我决定仅在文档处于编辑模式时将其设置为true,因为此时搜索框不可用。我得到的行为是信息不再出现。然后我用返回true作为属性的值进行测试,结果没有改变任何东西:消息刚刚消失。然后我使用静态值并将其设置为true,然后消息就会出现

我的结论是,存在一个bug,它阻止为该属性考虑任何计算值

因此,我必须找到一个解决办法,防止用户使用serach box时弹出消息。这是我想出的解决办法

在客户端,我们可以访问XSP对象。其方法之一是XSP._setDirty()。您可以将其设置为true或false,这将影响页面是否显示弹出消息。因此,在我的搜索按钮中,我在客户端的onclick事件中添加了以下代码:

XSP._setDirty(false,""); //so we don't get the "do you want to leave this page" message
showStandBy();  //show standby in case search is long or slow
return true;
这样,我告诉我的页面不要显示消息,并且不会显示弹出窗口

很遗憾,您不能使用该属性的计算值,但至少我们有一个解决方法。希望这将是有用的人

我想我有办法了

这就是我现在拥有的,它控制着国旗:

<xp:this.enableModifiedFlag><![CDATA[${javascript:context.getUrlParameter("action")=="editDocument";}]]></xp:this.enableModifiedFlag>

我更愿意使用document1.isEditable()函数,但到目前为止,我还没有成功使用它,既没有动态计算,也没有页面加载


至少我有一些似乎有效的东西。是时候向最终用户提交代码了

您可以包含用于计算属性的代码吗?请包括它是动态绑定(
{…}
)还是页面加载绑定(
${…}
)。这可能是无法动态计算的,或者编辑需要完全重新加载页面(假设行为自8.5.3以来没有改变!)Paul,我曾经有过这种情况,它的行为就像根本没有设置属性一样:enableModifiedFlag=“#{javascript:true}”。最终的目标是,如果文档处于编辑模式,则将其设置为true;如果文档未处于编辑模式,则设置为false。这不是我想要的解决方案,但它似乎满足了我的需要。