Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 遍历回类别时ViewNavigator失败_Java_Xpages_Lotus Notes_Notesview - Fatal编程技术网

Java 遍历回类别时ViewNavigator失败

Java 遍历回类别时ViewNavigator失败,java,xpages,lotus-notes,notesview,Java,Xpages,Lotus Notes,Notesview,我在一些代码中发现了一个有趣的错误,它与我在其他地方工作的代码几乎相同(至少在结构上)。我得到一个“Notes错误:在索引中找不到条目”错误,它发生在我的ViewNavigator.getNext(ViewEntry)的while循环行中。我觉得我错过了一些明显的东西,所以希望有人能发现它(我只是盯着它发疯) [更新] Jesse关于将autoUpdate设置为false的说明起到了作用。它似乎与我的循环相关,因为我的循环在此循环期间保存到另一个文档(相同的数据库,不同的视图)。我通过放置vw.

我在一些代码中发现了一个有趣的错误,它与我在其他地方工作的代码几乎相同(至少在结构上)。我得到一个“Notes错误:在索引中找不到条目”错误,它发生在我的ViewNavigator.getNext(ViewEntry)的while循环行中。我觉得我错过了一些明显的东西,所以希望有人能发现它(我只是盯着它发疯)

[更新] Jesse关于将autoUpdate设置为false的说明起到了作用。它似乎与我的循环相关,因为我的循环在此循环期间保存到另一个文档(相同的数据库,不同的视图)。我通过放置
vw.setAutoUpdate(false)成功在视图上定义句柄后立即执行。
[/更新]

我正在浏览单个类别视图(通过引用视图中每个文档的字段值),以总结分组文档中的一些信息。启用调试后,我发现错误发生在从第一个类别中的最后一个文档(文档的ViewEntry)遍历回一个类别(ViewEntry)时

下面是我的代码的精简版本(//…表示为清晰起见删除的行):

View vw=db.getView(“”);
ViewNavigator nav=vw.createViewNav();
ViewEntry first=nav.getFirst();
字符串unid=“”;
while(第一个!=null){
if(first.isCategory()){
如果(!unid.isEmpty()){
//汇总信息并保存回类别相关单据
Document myDoc=db.getDocumentByUNID(unid);
//做我的事
布尔成功=myDoc.save(真、假);
myDoc.recycle();
}
unid=“”;
}
if(first.isDocument()){
向量colVals=first.getColumnValues();
if(unid.isEmpty()){
//将临时聚合变量重置回初始值(例如-0)
//...
unid=(String)colVals.get(5);//与unid相关的类别的值
}否则{
//使用之前建立的临时变量和之后处理的临时变量对摘要值进行聚合
//...
//使用临时变量从colVals执行聚合
}
会话.回收(colVals);
}
ViewEntry tmp=nav.getNext(first);//这是失败的一行!!只有当它是下一个类别时,它才有一个
首先,回收();
第一个=tmp;
}
设置视图。setAutoUpdate(false)应将其清除,可能是因为其中保存了文档

我发现在获取视图后一直设置这个是一个好策略(我相信ODA会在Khan模式下自动设置)。然后,它还允许您设置nav.setBufferMaxEntries(400),这可以改进冗长的视图导航。

设置view.setAutoUpdate(false)应该将其清除,可能是因为其中保存了文档


我发现在获取视图后一直设置这个是一个好策略(我相信ODA会在Khan模式下自动设置)。然后,它还允许您设置nav.setBufferMaxEntries(400),这改进了冗长的视图导航。

听起来是使用OpenNTF Domino API的另一个好理由。听起来是使用OpenNTF Domino API的另一个好理由。