0

NotesViewNavigator で GetNextDocument または GetNextCategory のリサイクルを行うにはどうすればよいですか? どちらも引数をとらないため、一時変数を使用してビューのように次のドキュメントを事前に取得するという従来の方法を使用することはできません。

解決策は getNext を argmenumnt とともに使用することだと思いますが、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: }
4

2 に答える 2

1

これは私がよく使うパターンです:

var documentEntry = nav.getFirstDocument();
while( documentEntry != null ){
  var nextDocumentEntry = nav.getNextDocument();
  // do stuff
  documentEntry.recycle();
  documentEntry = nextDocumentEntry;
}
于 2013-02-26T06:25:51.500 に答える
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();
}

私はそれをテストしませんでしたが、うまくいくと思います...

于 2013-02-26T15:14:02.410 に答える