如何在NotesViewNavigator中为GetNextDocument或GetNextCategory进行回收?两者都没有参数,所以你不能使用传统的方法来使用临时变量来预先获取下一个文档,就像在视图中一样。
我想解决方案是只使用带有argmenumnt的getNext,但是仍然可以使用GetNextDocument / GetNextCategory吗?
我得到的错误是在第20行。没有回收代码运行正常。根据我的理解,循环破坏了对象,因此我可以理解错误的原因。我的问题是,如果有另一种解决方法吗?
[TypeError]调用方法NotesViewNavigator.getNextDocument()null时发生异常 发生在第20行
1: var viewName = "vwParticipantsProjectIDEquipmentIDUsername";
2:
3:
4: var v:NotesView = database.getView(viewName);
5: var nav:NotesViewNavigator = v.createViewNavFromCategory(sessionScope.get("ExportProjectID"));
6:
7:
8: var viewEnt:NotesViewEntry = nav.getFirstDocument();
9:
10: while (viewEnt != null)
11: {
12:
13: if (viewEnt.isDocument())
14: {
15:
16: var doc:NotesDocument = viewEnt.getDocument();
17: }
18:
19: viewEnt.recycle();
20: viewEnt = nav.getNextDocument();
21: }
答案 0 :(得分:1)
这是我倾向于使用的模式:
var documentEntry = nav.getFirstDocument();
while( documentEntry != null ){
var nextDocumentEntry = nav.getNextDocument();
// do stuff
documentEntry.recycle();
documentEntry = nextDocumentEntry;
}
答案 1 :(得分:0)
为什么不尝试应用这样的旧模式:
var viewName = "vwParticipantsProjectIDEquipmentIDUsername",
v:NotesView = database.getView(viewName),
nav:NotesViewNavigator = v.createViewNavFromCategory(sessionScope.get("ExportProjectID")),
viewEnt:NotesViewEntry = nav.getFirstDocument(),
tmp:NotesViewEntry;
while (viewEnt !== null)
{
if (viewEnt.isDocument())
{
var doc:NotesDocument = viewEnt.getDocument();
}
tmp = viewEnt;
viewEnt = nav.getNextDocument();
tmp.recycle();
}
我没有测试它,但我猜这有用......