保存在 bean 中后 Document 中的重复项

duplicate items in Document after saving in a bean

我在使用通过 java bean 保存其值的 XPage 时遇到奇怪但可重现的行为。 copyAllItems 到文档后,文档中有两个富文本项。第一个是空的,第二个按预期填充。

这是我的 Xpage:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.data>
    <xp:dominoDocument var="docDataSource" formName="test"></xp:dominoDocument>
</xp:this.data>
<xp:div id="test">
    <xp:fileUpload id="fileUpload1" value="#{docDataSource.test}"></xp:fileUpload>
</xp:div>
<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" refreshId="test">
        <xp:this.action><![CDATA[#{javascript:registration.testCopyAllItems(docDataSource);}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>

这是我的 java bean 方法:

public void testCopyAllItems(DominoDocument docDataSource) throws NotesException{
    Document docUser = database.createDocument(); // <- get any database
    docDataSource.getDocument(true).copyAllItems(docUser, true);
    docUser.save();
}

这是文档中的结果:

有没有人知道是什么导致了这个问题?

这似乎是一种 "normal" 行为,我在使用 RichtText 字段时经常看到这种行为。没关系。注释可以处理包含多个项目的 RichText 字段。

作为解决方法,

  • removeItem()
  • 删除 copyAllItems() 之后的 RichText 字段
  • 分别用copyItem()复制。

这应该只会产生一项。