如何使用Java复制notes项

如何使用Java复制notes项,java,xpages,lotus-notes,Java,Xpages,Lotus Notes,我想使用Java将note项从一个note文档复制到另一个note文档,下面是我希望在Java中实现的my lotus脚本版本 Sub CopyItem(FromDoc As NotesDocument, ToDoc As NotesDocument, itemName As String) Dim FromItem As NotesItem Dim ToItem As NotesItem If Not (FromDoc.Hasitem(itemName)) Then Exit Sub Se

我想使用Java将note项从一个note文档复制到另一个note文档,下面是我希望在Java中实现的my lotus脚本版本

Sub CopyItem(FromDoc As NotesDocument, ToDoc As NotesDocument, itemName As String)

Dim FromItem As NotesItem
Dim ToItem As NotesItem

If Not (FromDoc.Hasitem(itemName)) Then Exit Sub
Set FromItem = FromDoc.GetFirstItem(itemName)
If Not ToDoc.hasitem(itemName) Then Set ToItem = ToDoc.CreateItem(itemName)
ToItem.Values = FromDoc.Values      
End Sub
我尝试了以下方法:

 public static void copyAnItem(Document FromDoc, Document ToDoc, String sItemName){
        Vector<String> FromItem = new Vector<String>();
        Vector<String> ToItem = new Vector<String>();

        if(!FromDoc.hasItem((itemName))){
            return;
        }
     FromItem = FromDoc.getItemValue(itemName);
     if(!ToDoc.hasItem(sItemName)){
         ToItem.add(itemName);
        }


     ToItem.addAll(FromDoc);

    }
publicstaticvoidcopyanItem(documentfromdoc、documenttodoc、stringsitemname){
Vector FromItem=新向量();
Vector ToItem=新向量();
如果(!FromDoc.hasItem((itemName))){
回来
}
FromItem=FromDoc.getItemValue(itemName);
如果(!ToDoc.hasItem(sItemName)){
ToItem.add(项目名称);
}
ToItem.addAll(FromDoc);
}
它不适用于作者或读者项目。更好的克努特解决方案:)

它不适用于作者或读者项目。更好的克努特解决方案:)

您可以通过一行代码从fromDoc获取整个项目,包括所有属性,并将其复制到toDoc


您可以通过一行代码从fromDoc获取包含所有属性的整个项目,并将其复制到toDoc with。

是否可以在Java中创建新的NotesItem()对象?就像我们在LotusScript中所做的那样-Set holdinItem=New NotesItem(fromDoc,itemName,“”)是的,Java中的Notes类和方法与LotusScript中的差不多。当您在Notes帮助中打开LotusScript Notes类描述时,文档末尾就有到相关Java类的链接。我曾尝试将@simonpeter的LotusScript语法直译为Java,但在CreateItem调用中遇到了问题。它不存在于Java类中。但后来我查找LotusScript,发现它也不存在!Java类中也没有新的Item()构造函数,因此无法直接翻译set-holdinItem=new-NotesItem(…)。@RichardSchwartz使用关键字“new-NotesItem”来搜索Notes帮助列表您将看到的第一个链接作为示例:NotesItem classHaha,这似乎是LotusScript和Java之间少有的区别之一。因此,现在有一个Notes客户机帮助来查找,很明显:Java中没有新的项(…)。文档说明“要从头创建一个新的Item对象,请在文档中使用
replaceItemValue
”。是否可以在Java中创建一个新的NotesItem()对象?就像我们在LotusScript中所做的那样-Set holdinItem=New NotesItem(fromDoc,itemName,“”)是的,Java中的Notes类和方法与LotusScript中的差不多。当您在Notes帮助中打开LotusScript Notes类描述时,文档末尾就有到相关Java类的链接。我曾尝试将@simonpeter的LotusScript语法直译为Java,但在CreateItem调用中遇到了问题。它不存在于Java类中。但后来我查找LotusScript,发现它也不存在!Java类中也没有新的Item()构造函数,因此无法直接翻译set-holdinItem=new-NotesItem(…)。@RichardSchwartz使用关键字“new-NotesItem”来搜索Notes帮助列表您将看到的第一个链接作为示例:NotesItem classHaha,这似乎是LotusScript和Java之间少有的区别之一。因此,现在有一个Notes客户机帮助来查找,很明显:Java中没有新的项(…)。文档说明“若要从头开始创建新的项目对象,请在文档中使用
replaceItemValue
。”
public static void copyAnItem(Document FromDoc, Document ToDoc, String sItemName){

    if(FromDoc.hasItem(sItemName)){
        ToDoc.replaceItemValue(sItemName, FromDoc.getItemValue(sItemName));
    }    

}
public static void copyAnItem(Document fromDoc, Document toDoc, String itemName){
    try {
        if(fromDoc.hasItem(itemName)) {
            toDoc.copyItem(fromDoc.getFirstItem(itemName));
        }
    } catch (NotesException e) {
        // your exception handling
    }
}