0

我正在尝试以编程方式向通讯簿添加新名称,但出现以下错误:

[TypeError] 调用方法 NotesDocument.replaceItemValue(string, Array) 发生异常,Vector 中的对象类型未知或不受支持

下面的代码片段:

var addressBook = session.getDatabase("","names.nsf");
var gView:NotesView = addressBook.getView("($VIMGroups)");
var gDoc:NotesDocument = gView.getDocumentByKey("groupName", true);

var newg:java.util.Vector = [];
var mems:java.util.Vector = new Array(gDoc.getItemValue('Members'));
newg.push(mems);

var newNames:java.util.Vector = new Array(getComponent("NewMems").getValue());
newg.push(newNames);

gDoc.replaceItemValue("Members", newg);
gDoc.save();

添加单个用户可以正常工作,但它不会以下面所需的规范格式保存用户:

CN=John Doe/O=组织

相反,它以下面的原始格式保存:

约翰·多伊/组织

我期待您的建议。谢谢。

4

3 回答 3

2

您不能在字段中存储数组。newg改为创建一个 java.util.Vector 并与之集成。

对于 OpenNTF Domino API,团队编写了很多代码来自动转换为向量,其中可能包括数组。

于 2018-10-05T15:29:22.507 回答
0

我能够使用 forloop 循环遍历列表并将其推送到新创建的数组中来解决该问题。使用 forloop 似乎有所作为。

var newg = [];
var group = new Array(getComponent("NewMems").getValue()), lenGA = group.length;
for(i = 0; i < lenGA; i++){
   newg.push(group[i]);
}
gDoc.replaceItemValue("Members", newg);
gDoc.save();

对此行为的解释将不胜感激。

于 2018-10-08T08:55:42.530 回答
0

不要使用数组(这是 JS 的东西)。将其初始化为向量。

var newg:java.util.Vector = new java.util.Vectory();

然后查找 Vector 方法以查看如何添加到该向量。不确定您是否必须使用 Name 方法转换名称,但我会将它们存储为“CN=Joe Smith/O=Test Org”以确保您获得正确的格式。

于 2018-10-05T15:46:35.457 回答