Xpages 如何将富文本附件从一个文档传输到另一个文档
我有两个文件,它们的工作方式应该能够在它们之间传输文件。但是,它不起作用。我得到的异常是调用方法NotesDocument.save()时发生的异常。Notes错误:缺少一个或多个源文档的附件。运行Fixup删除源数据库中的文档。这是在我尝试对刚从第一个数据库向其传输文件的文档调用Xpages 如何将富文本附件从一个文档传输到另一个文档,xpages,lotus-notes,attachment,richtext,Xpages,Lotus Notes,Attachment,Richtext,我有两个文件,它们的工作方式应该能够在它们之间传输文件。但是,它不起作用。我得到的异常是调用方法NotesDocument.save()时发生的异常。Notes错误:缺少一个或多个源文档的附件。运行Fixup删除源数据库中的文档。这是在我尝试对刚从第一个数据库向其传输文件的文档调用save()函数后发生的 功能如下: function transferFiles(docToGetFrom, docToTransferTo, fileFieldFromFirstName, fileFieldFro
save()
函数后发生的
功能如下:
function transferFiles(docToGetFrom, docToTransferTo, fileFieldFromFirstName, fileFieldFromSecondName)
{
var rit1:NotesRichTextItem = getFirstNotesRichTextItem(docToGetFrom, fileFieldFromFirstName);
docToTransferTo.copyItem(rit1, fileFieldFromSecondName);
deleteAllFilesFromDocument(docToGetFrom, fileFieldFromFirstName);
docToTransferTo.save();
}
function getFirstNotesRichTextItem(documentToGetFrom, fileFieldName)
{
if (documentToGetFrom == null)
{
return(null);
}
if (!documentToGetFrom.hasItem(fileFieldName))
{
return(null);
}
var rit1:NotesRichTextItem = documentToGetFrom.getFirstItem(fileFieldName);
return rit1;
}
function deleteAllFilesFromDocument(documentToDeleteFrom, fileFieldName)
{
var arr = getAllEmbeddedObjects(documentToDeleteFrom, fileFieldName);
for(var i = 0; i < arr.length; i++)
{
arr[i].remove();
}
documentToDeleteFrom.save();
}
function getAllEmbeddedObjects(documentToGetFrom, fileFieldName)
{
var rit1:NotesRichTextItem = getFirstNotesRichTextItem(documentToGetFrom, fileFieldName);
if (rit1 == null)
{
return(null);
}
try
{
var arr=rit1.getEmbeddedObjects();
return arr;
}
catch(e)
{
return(null);
}
}
函数传输文件(docToGetFrom、docToTransferTo、fileFieldFromFirstName、fileFieldFromSecondName)
{
变量rit1:NotesRichTextItem=getFirstNotesRichTextItem(docToGetFrom,fileFieldFromFirstName);
copyItem(rit1,fileFieldFromSecondName);
DeleteAllFileFromDocument(docToGetFrom,fileFieldFromFirstName);
docotransferto.save();
}
函数getFirstNotesRichTextItem(documentToGetFrom,fileFieldName)
{
if(documentToGetFrom==null)
{
返回(空);
}
如果(!documentToGetFrom.hasItem(fileFieldName))
{
返回(空);
}
变量rit1:NotesRichTextItem=documentToGetFrom.getFirstItem(fileFieldName);
返回rit1;
}
函数DeleteAllFileFromDocument(documentToDeleteFrom,fileFieldName)
{
var arr=getAllEmbeddedObjects(documentToDeleteFrom,fileFieldName);
对于(变量i=0;i
根据简单的逻辑,我需要执行以下操作以使其正常工作:
save()
save()
我也做了同样的事,但还是得到了这个令人讨厌的例外。此外,我还试图通过将设置为1来解决此问题,但运气不佳。我假设方法
copyItem()
(我猜它只能在简单数据类型下正常工作)一定有问题。有什么问题吗?提前感谢。您可能需要从源文档中分离附件并将其附加到目标文档。有关示例,请参见NotesEmbeddedObject类。您可能需要从源文档中分离附件,然后将其附加到目标文档。有关示例,请参见NotesEmbeddedObject类。使用NotesItem类的CopyItemToDocument方法。下面是我在LotusScript代理中使用的一些代码,但是CopyItemToDocument方法在Java和SSJS中也可用
If doc.Hasitem("RTF1") Then
Set item = Nothing
Set item = doc.getFirstItem("RTF1")
Call item.Copyitemtodocument(targetdoc, "targetRTF")
Call item.Remove()
End If
使用NotesItem类的CopyItemToDocument方法。下面是我在LotusScript代理中使用的一些代码,但是CopyItemToDocument方法在Java和SSJS中也可用
If doc.Hasitem("RTF1") Then
Set item = Nothing
Set item = doc.getFirstItem("RTF1")
Call item.Copyitemtodocument(targetdoc, "targetRTF")
Call item.Remove()
End If
如果先保存B,然后处理A呢?如果先保存B,然后处理A呢?对于Domino MIME类,这可以在不分离附件的情况下完成。对于Domino MIME类,这可以在不分离附件的情况下完成。