我有一个对象Foo
,其中包含我使用play-salat插件从MongoDb获得的对象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对象列表?我想/希望某些转移对象不是必需的。
答案 0 :(得分:4)
请注意salat wiki它不支持包含集合的选项。
尝试改为:
case class Foo (
@Key("_id") id: ObjectId = new ObjectId,
bars: List[Bar] = List()
)
答案 1 :(得分:2)
Salat目前不支持包含集合的选项,即Option[List[T]]
。有关详细信息,请参阅此处:https://github.com/novus/salat/wiki/SupportedTypes
只需使用List
,并模拟“无”,只需使用List.empty[Bar]
进行初始化。