1

PlayFramework2.0.1ビューでmongoDBCursorを反復処理しようとしています。ただし、何もリストされていません。理想的にはカーソルをページ分割したいのですが、カーソル内のすべてのオブジェクトを一覧表示できたとしても問題ありません。

これが私がしていることです。私のコントローラーでは、Mongo DBにクエリを実行し、DBCursorをレンダリングします。ログには、カーソルが空ではないと記載されています。

次に、ビューに次のように表示されます。

@(cursor: com.mongodb.DBCursor)


@main("Title") {
<div id="objects" class="content">
 <h2>Objects</h2>

 @if(cursor.count() == 0) {
    There are currently no objects in the data base.
 } else {
    @while(cursor.hasNext()) {
        @cursor.next().get("name");
    }
 } 
</div>    
}

残念ながら、ページがレンダリングされたときの見出し以外は何もリストされていません。面白いことに、を省略し@while(cursor.hasNext())てカーソルから最初のオブジェクトのみを出力すると、ページにレンダリングされます。

どうやらその間何かが間違っています。それで、ビューでDBCursorをレンダリング(および/またはページ分割)することは可能ですか?

ありがとう!

4

1 に答える 1

3

たぶん@whileはscalaテンプレートに存在しません!?

この種の作業は、ビューで実行することを意図したものではありません。ビューはレンダリング用であり、コントローラーはロジックおよびデータベースへのアクセス用です。DBObjectをコントローラー内のリストまたは配列に解析し、@forを使用してビュー内で反復処理することを検討してください。

ページネーションには、次のようなものを使用します。

myCollection.find(query).skip(40).limit(20);
于 2012-06-17T15:22:35.973 に答える