我想在我的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