我想在我的Scala Play模板中引用类型选项。我一直在试图利用这个资源:http://www.playframework.com/modules/scala-0.9/templates在Scala Play模板中处理选项
这是我正在试图引用的情况下类中的字段:
@{optionalobject ?. field}
,它不工作,这是我得到的错误:
';' expected but '.' found.
我不确定为什么我得到这个错误。
我想在我的Scala Play模板中引用类型选项。我一直在试图利用这个资源:http://www.playframework.com/modules/scala-0.9/templates在Scala Play模板中处理选项
这是我正在试图引用的情况下类中的字段:
@{optionalobject ?. field}
,它不工作,这是我得到的错误:
';' expected but '.' found.
我不确定为什么我得到这个错误。
@optionalobject.map(o => o.field).getOrElse("default string if optionalobject is None")
根据您的标签判断您使用的是Play 2.x版本,但是您正在参考适用于Play 1.x的模块的文档。
假设你的类型的比赛,我相信你正在寻找的是这样的:
@optionalobject.getOrElse(field)
对于可以跨许多行(如果需要)略微更好的格式:
@optionalObject match {
case Some(o) => {
@o.field
}
case None => {
No field text/html/whatever
}
}
或者如果你不想显示任何东西,如果该字段没有定义:
@for(o <- optionalObject) {
@o.field
}
_display的第二个代码片段如果该字段不是defined_用例,那么这个代码就很可爱。我一直在说,“Option”是一个集合类型,可以让你做这样的事情。 – avik
另一种可能性是使用地图,语法,我更喜欢用HTML
@pagination.next.map { next =>
<a href="@Routes.paginated(next)">
@HtmlFormat.escape("Next >>>")
</a>
}
有时混合起来,可能是方便与Option
处理,以简化房间模板代码时,写一个简短的帮助:
// Helper object is defined in some file Helper.scala
object Helper {
def maybeAttribute[T](attrName:String, maybeValue:Option[String]) =
maybeValue.fold("") { value =>
Html(attrName + "=" + value).toString()
}
}
然后模板可以直接使用此帮手方法,如
// some view.scala.html file
<div @Helper.maybeAttribute("id",maybeId)>
</div>
这不起作用。这是说该领域不存在。但是,它必须存在。在输出案例类时,它会显示案例类的所有字段。 –
@ Lilluda5编辑你的问题,并显示更多的代码。你如何声明'optionalobject'和'field'? – estmatic