我在extlib对话框中有一个绑定到打开文档的面板作为数据源document1
。在按钮保存上,我想比较后端文档和document1
之间的所有字段值。但是,后端文档中的所有字段值似乎都已更新,因此其字段值在document1
中相同。比较在docuemnt1.save()
之前完成。
根据我的理解,document1.getDocument()
应该获得所有原始/当前数据的后端文档。 document1.getDocument(true)
应获取所有新数据。我尝试getDocumentByID
并发现所有字段值都在后端文档中更新。我不知道因为document1.save
尚未执行。
为什么在保存之前使用新数据更新后端文档?
有没有更好的方法来获取所有原始/当前数据的后端文档?
答案 0 :(得分:2)
如果您使用 getDocument 方法使用参数 true ,则对数据源所做的所有更改都会临时写入数据库的数据存储区。
XPages引擎“足够智能”,可以意识到 NotesDocument 对象的多个实例都引用了相同的后端文档。它现在将从数据源的数据存储区返回缓存的数据。这就是为什么所有对象现在将返回更新的值而不是存储在后端文档中的值(使用多个数据源会给你相同的结果)。
要从后端文档访问数据,您可以在视图上使用 @DbLookup ,其中所有文档都按其UNID排序。
@DbLookup("","AllByUNID", document1.getDocument( true ).getUniversalID(), "FIELD")