如何使用 Java 遍历 IBM Notes (NotesView) 视图中的所有文档
How to loop through all documents in a View of IBM Notes (NotesView) with Java
我有一个包含 2 个以上文档的视图。这是获取文档的代码
目前我有这个:
Document orderRegelDocument = OrderRegelsVoorCopsView.getFirstDocument();
while (orderRegelDocument != null) {
//do something here
System.out.println("Nieuwe Orderregel");
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument);
orderRegelDocument.recycle(); // recycle the one we're done with
orderRegelDocument = tempOrderRegel;
}
正在抓取第一个文档,但之后我收到 NotesException: Notes error: Entry not found in index viewName。我做错了什么?
旁边还有一个问题。如果用户在文档中,但我的代理也更改了一个字段,那么当用户保存文档时,它会发生保存冲突。有没有办法克服这个问题。
我不知道你所有的代码,但我的猜测是假设 getNextDocument(document) 获取下一个并将其设置在文档中(否则你永远不会将 getNext 结果分配给任何东西)你调用 getNextDocument( ) 两次而不是一次,你跳过第二行并尝试操纵第三行(不存在),你得到错误。
if( OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument) != null){ //Here you take the next
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument); //And here you take the next after
// Here you are at the wrong item already...
您显然在代码中做了 某事 ,但您没有显示,这会在您调用 getNextDocument
之前改变视图。您可能正在删除文档、更改导致不再为视图选择文档的项目值,或者更改导致文档重新排序到视图集合中的不同位置的项目值。
用于避免此类事情的习惯用法是将对 getNextDocument
的调用作为它在 while 循环主体中发生的第一件事之一。即,只需将其向上移动,使其出现在您的 //do something here
代码之前。像这样:
Document orderRegelDocument = OrderRegelsVoorCopsView.getFirstDocument();
while (orderRegelDocument != null) {
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument);
//do something here
System.out.println("Nieuwe Orderregel");
orderRegelDocument.recycle(); // recycle the one we're done with
orderRegelDocument = tempOrderRegel;
}
我有一个包含 2 个以上文档的视图。这是获取文档的代码
目前我有这个:
Document orderRegelDocument = OrderRegelsVoorCopsView.getFirstDocument();
while (orderRegelDocument != null) {
//do something here
System.out.println("Nieuwe Orderregel");
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument);
orderRegelDocument.recycle(); // recycle the one we're done with
orderRegelDocument = tempOrderRegel;
}
正在抓取第一个文档,但之后我收到 NotesException: Notes error: Entry not found in index viewName。我做错了什么?
旁边还有一个问题。如果用户在文档中,但我的代理也更改了一个字段,那么当用户保存文档时,它会发生保存冲突。有没有办法克服这个问题。
我不知道你所有的代码,但我的猜测是假设 getNextDocument(document) 获取下一个并将其设置在文档中(否则你永远不会将 getNext 结果分配给任何东西)你调用 getNextDocument( ) 两次而不是一次,你跳过第二行并尝试操纵第三行(不存在),你得到错误。
if( OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument) != null){ //Here you take the next
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument); //And here you take the next after
// Here you are at the wrong item already...
您显然在代码中做了 某事 ,但您没有显示,这会在您调用 getNextDocument
之前改变视图。您可能正在删除文档、更改导致不再为视图选择文档的项目值,或者更改导致文档重新排序到视图集合中的不同位置的项目值。
用于避免此类事情的习惯用法是将对 getNextDocument
的调用作为它在 while 循环主体中发生的第一件事之一。即,只需将其向上移动,使其出现在您的 //do something here
代码之前。像这样:
Document orderRegelDocument = OrderRegelsVoorCopsView.getFirstDocument();
while (orderRegelDocument != null) {
tempOrderRegel = OrderRegelsVoorCopsView.getNextDocument(orderRegelDocument);
//do something here
System.out.println("Nieuwe Orderregel");
orderRegelDocument.recycle(); // recycle the one we're done with
orderRegelDocument = tempOrderRegel;
}