Play2,MongoDB,play salat:类抛出异常



我有一个对象Foo,它包含一个对象列表Bar,我使用play-salat插件从MongoDb中获得这些对象。模型看起来像这样。

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对象列表?我想/希望某种转移对象是不必要的。

请注意,salat wiki不支持包含集合的Options。

尝试:

case class Foo (
  @Key("_id") id: ObjectId = new ObjectId,
  bars: List[Bar] = List()
)

Salat当前不支持包含集合的选项,即Option[List[T]]。有关详细信息,请参阅此处:https://github.com/novus/salat/wiki/SupportedTypes

只需使用List,要模拟"nothing",只需用List.empty[Bar]初始化即可。

相关内容

  • 没有找到相关文章

最新更新