我的xPage SSJS在行中失败:
viewEntry = view.getNext(viewEntry);
有错误
我确实将此选项设置为false,但无济于事:
view.setAutoUpdate(false);
所以我怀疑它失败了,因为用户由于设置了读取器访问权限而无法访问NEXT文档。因此,此类文档无法在 View 中看到,而只能在TOTALS中看到。如何解决?
另一个问题是,如果Domino服务器崩溃,则
这是我的代码:
var view:NotesView = database.getView("xxxxxxx");
view.setAutoUpdate(false);
var viewNav:NotesViewNavigator = view.createViewNav();
var viewEntry:NotesViewEntry = viewNav.getFirst();
while (viewEntry != null) {
if (viewEntry.isCategory()){
// I work with category entry data
} else if(viewEntry.isTotal()){
// I collect totals
} else {
// I work with view entry
}
var tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
viewEntry.recycle();
viewEntry = tmpEntry;
}
它在以下行中失败:viewNav.getNext(viewEntry)
Script interpreter error, line=1001, col=37: [TypeError] Exception occurred calling method NotesViewNavigator.getNext(lotus.domino.local.ViewEntry)
Notes error: Entry not found in index ((xxxxxxx))
tmpEntry:NotesViewEntry = viewNav.getNext(viewEntry);
那么,如果当前或下一个无效,我该如何真正进入下一个条目?
最佳答案
还可能需要验证在索引中找不到哪个条目。根据代码的上下文,它可能是第一个。例如,可能已对其进行了更新以将其从 View 中移除。首先检查null。读者访问也可能是一个问题,如果您使用的是ViewNavigator,则访问的原因有多种。使用try/catch也可以验证您的假设-sessionAsSigner(或ODA的本机 session )将有权访问下一个文档,这将允许日志记录进行确认。一旦确定原因,就可以围绕它进行编码。
如ViewEntry和Document的文档中所述,ViewEntry.isValid()验证软删除或用户是否没有访问权限,二者均具有相同的方法。