Recycle и GetNextDocument / GetNextCategory в NotesViewNavigator?

Как сделать переработку для GetNextDocument или GetNextCategory в NotesViewNavigator? Ни один из них не принимает аргумента, поэтому вы не можете использовать обычный метод использования временной переменной для предварительного получения следующего документа, как вы могли бы в представлении.

Я полагаю, что решением было бы просто использовать getNext с аргументом argmenumnt, но можно ли по-прежнему использовать GetNextDocument / GetNextCategory?

Ошибка, которую я получаю, находится в строке 20. Без перезапуска код работает нормально. Из того, что я понимаю, recycle уничтожает объект, поэтому я могу понять причину ошибки. Мой вопрос: есть ли другой способ обойти это?

[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: }

2 ответа

Решение

Это шаблон, который я склонен использовать:

var documentEntry = nav.getFirstDocument();
while( documentEntry != null ){
  var nextDocumentEntry = nav.getNextDocument();
  // do stuff
  documentEntry.recycle();
  documentEntry = nextDocumentEntry;
}

Почему бы вам не попробовать применить старый шаблон так:

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();
}

Я не проверял это, но я думаю, что это работает...

Другие вопросы по тегам