getAllEntriesByKey causes error: Unknown or unsupported object type in Vector

getAllEntriesByKey causes error: Unknown or unsupported object type in Vector

我在 xp:messages 控件中收到以下错误:

Error in lotus.domino.local.View, line -2: NotesException: Unknown or unsupported object type in Vector

它是在我的Java class下面的代码中生成的:

View vw = db.getView(viewName);
if(null != vw){ 
ViewEntryCollection vec
-> vec = vw.getAllEntriesByKey(key);
}

此处的键是提供的字符串。

有人对此有解释吗?

有两件事需要考虑。首先是你的语法。代码应该如下

View vw = db.getView(viewName);
if(null != vw){ 
    ViewEntryCollection vec = vw.getAllEntriesByKey(key);
    // do something with the vec
}

第二个是异常信息:

矢量中的对象类型未知或不受支持。

文档 here 有方法签名。您提到的 key 变量是一个字符串,因此该方法应该是您使用的方法:

public ViewEntryCollection getAllEntriesByKey(Object key) throws NotesException

当您从代码中删除 -> 时,它是否按预期工作?

您传递的是字符串,而不是向量。您需要创建一个 Vector,然后将您的字符串作为第一个元素添加到其中,与 SSJS 中相同。

Vector vec = new Vector();
vec.add(key)
vw.getAllEntriesByKey(vec);

这是 ODA 的方法签名是 getAllEntriesByKey(Object key) 的原因之一,因此我们的抽象层会为您完成所有这些工作。另外一旦得到结果,就可以使用标准的Java循环来处理循环(for (ViewEntry ent : vec) {....})

您是否检查过您的变量 key 不为空?如果我提供一个 null 的关键参数,我会收到此错误消息。