play-salatプラグインを使用してMongoDbから取得したFoo
オブジェクトのリストを含むオブジェクトがあります。Bar
モデルはこんな感じ。
case class Foo (
@Key("_id") id: ObjectId = new ObjectId,
bars: Option[List[Bar]] = None
)
case class Bar (
something: String
)
ビューには、fooオブジェクトのリストが表示されます。このようなイテレータを渡します
@(foos: Iterator[Foo])
データを表示するテンプレートの部分は次のようになります。
@foos.map { foo =>
<div class="foo">@foo.id</div>
@if(foo.bars != None) {
<ul>
@for( bar <- bars ) {
<li>@bar.something</li>
}
</ul>
}
}
これを行うと、ClassCastExceptionが発生します。
[ClassCastException: com.mongodb.BasicDBList cannot be cast to scala.collection.immutable.List]
私はこのような他のバリエーションを試しました
@for( i <- 0 to foo.bars.size - 1 ) {
<li>@foo.bars.get(i).something</li>
}
ClassCastExceptionも発生します。
[ClassCastException: com.mongodb.BasicDBList cannot be cast to scala.collection.LinearSeqOptimized]
問題は、mongodbオブジェクトのリストをどのように反復できるかということです。ある種の転送オブジェクトは必要ないと思います。