1

我有一个包含两个附件的注释文档。attachFile 和 attachFile_1。在我将 pdf 上传到 attachFile_1 后,如果该项目未能通过用户的手动验证,我想删除该项目。我有这样的项目确实删除但当我打开文档属性时文档仍然保留 $FILE 属性。

请参阅下面的代码。

Xpages 代码

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.resources>
        <xp:script src="/scriptsFile.jss" clientSide="false"></xp:script>
    </xp:this.resources>
    <xp:panel id="pnlDocData">
        <xp:this.data>
            <xp:dominoDocument var="document1" formName="frmA" action="openDocument"
             documentId="#{javascript:sessionScope.id}" scope="request">
            </xp:dominoDocument>

            <xp:table style="width:99%">
                <xp:tr>
                    <xp:td align="center" valign="middle">
                        <xp:label id="label1" value="Verify Client Submission"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:fileDownload rows="30" id="fileDownload1" displayLastModified="false" value="#{document1.attachFile_1}">
                        </xp:fileDownload>
                    </xp:td>
                    <xp:td>
                        <xp:button value="Decline" id="button">
                            <xp:eventHandler event="onclick" submit="true" refreshMode="complete" id="eventHandler7">
                                <xp:this.action><![CDATA[#{javascript:decline()}]]></xp:this.action>
                            </xp:eventHandler>
                        </xp:button>
                    </xp:td>    
                </xp:tr>
          </xp:table>
    </xp:panel>
</xp:view>

Javascript 文件

function decline()
{
    var doc:NotesDocument = document1.getDocument();
    doc.replaceItemValue("attachFile_1", null);
    var item:NotesItem = doc.getFirstItem("attachFile_1");
    item.remove();
    doc.save();
}

当我运行下面的代码时,附件大小仍然为 2,而我应该得到大小为 1。

var doc:NotesDocument = database.getDocumentByUNID(sessionScope.id);
var attachments:java.util.Vector = session.evaluate("@AttachmentNames", doc);
print(attachments.size());
4

2 回答 2

0

为了正确删除附件,您需要使用NotesEmbeddedObject 类的Remove方法。您可以通过 NotesRichTextItem 类的 EmbeddedObjects 属性获取此信息,但在某些情况下,附件不在富文本字段中但仍在文档中的情况下可能会弹出。事实上,您似乎正在使用当前代码创建这些案例!要在已经存在这种情况的文档中删除附件,您需要使用 NotesDocument.EmbeddedObjects 属性获取 NotesEmbeddedObject 的句柄。

于 2020-07-20T23:13:39.093 回答
0

删除 RichTextItem attachFile_1 不会删除附件本身。如果您只删除富文本字段,则附件将附加到文档本身;因此,您仍然有 2 个附件。要正确删除富文本字段,您必须首先通过 RichTextItem 类的 EmbeddedObjects 属性删除附件。成功删除附件后,您可以删除备注项。

于 2020-07-21T06:37:32.400 回答