在XPages中实现SaveOptions行为

在XPages中实现SaveOptions行为,xpages,lotus-notes,lotus-domino,lotus,Xpages,Lotus Notes,Lotus Domino,Lotus,我喜欢创建一个XPage,它在保存行为方面与notes文档具有相同的可用性,特别是我喜欢实现SaveOptions行为“当用户更改某些内容时,系统会记住他保存,如果用户保存,系统会忘记他” 我找到了一个50%的解决方案,通过data->enableModifiedFlag属性,如果用户更改文档中的某些内容,系统会识别,如果是,则发布存储在data->ModifiedMessage属性中的字符串 <xp:view xmlns:xp="http://www.ibm.com/xsp/core"

我喜欢创建一个XPage,它在保存行为方面与notes文档具有相同的可用性,特别是我喜欢实现
SaveOptions
行为“当用户更改某些内容时,系统会记住他保存,如果用户保存,系统会忘记他”

我找到了一个50%的解决方案,通过data->enableModifiedFlag属性,如果用户更改文档中的某些内容,系统会识别,如果是,则发布存储在data->ModifiedMessage属性中的字符串

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" enableModifiedFlag="true">
     <xp:this.modifiedMessage><![CDATA["please Save"]]></xp:this.modifiedMessage>
</xp:view>

但是,如果我将文档保存在数据源中,并希望离开站点,则仍然会出现post


我怎么知道当XPages文档与dataSourceDoc不同时,post会发生,而如果XPages文档等于dataSourceDoc,则post不会发生?

enableModifiedFlag允许您优化功能

自定义控件还有一个enableModifiedFlag,它应该允许您仅在该自定义控件中的某些内容发生更改时发出消息

单个输入控件具有可设置为true的disableModifiedFlag,以确保在识别页面是否已修改时忽略特定控件

类型为“Cancel”的按钮将忽略enableModified并继续

您还可以通过编程方式设置或清除CSJS中的修改标志(XSP._setDirty(false)(“”)。还有一个view.setEnableModifiedFlag(布尔)方法,可用于从SSJS更改XPage上的enableModifiedFlag属性


面板没有enableModifiedFlag或disableModifiedFlag属性,但通过我提到的选项,它应该可以为您提供所需的控制。

enableModifiedFlag允许您优化功能

自定义控件还有一个enableModifiedFlag,它应该允许您仅在该自定义控件中的某些内容发生更改时发出消息

单个输入控件具有可设置为true的disableModifiedFlag,以确保在识别页面是否已修改时忽略特定控件

类型为“Cancel”的按钮将忽略enableModified并继续

您还可以通过编程方式设置或清除CSJS中的修改标志(XSP._setDirty(false)(“”)。还有一个view.setEnableModifiedFlag(布尔)方法,可用于从SSJS更改XPage上的enableModifiedFlag属性


面板没有enableModifiedFlag或disableModifiedFlag属性,但通过我提到的选项,它应该可以为您提供所需的控制。

这似乎是在文档保存后如何重置修改标志的问题。重新加载可能会有帮助。这似乎是在文档保存后如何重置修改标志的问题。重新加载可能会有帮助帮助。CSJS方法工作正常,ssjs方法在我的onclick事件中不起作用。我怀疑view.setEnableModifiedFlag(false)在xp:view标记上设置了一个属性,当该区域写入浏览器时,会在body标记上添加一个HTML属性(对应于XPage的xp:view)。因为您正在执行refreshMode=“norefresh”,主体标记的HTML将不会得到更新。您可能需要将refreshMode设置为full才能使其工作。CSJS方法工作正常,ssjs方法在我的onclick事件中不工作。我怀疑view.setEnableModifiedFlag(false)在xp:view标记上设置一个属性,当该区域写入浏览器时,该属性会在body标记上添加一个HTML属性(对应于XPage的xp:view)。由于您正在执行refreshMode=“norefresh”,因此body标记的HTML不会得到更新。您可能需要将refreshMode设置为full才能正常工作。