2013-12-12 82 views

回答

5
@optionalobject.map(o => o.field).getOrElse("default string if optionalobject is None") 
0

根據您的標籤判斷您使用的是Play 2.x版本,但是您正在參考適用於Play 1.x的模塊的文檔。

假設你的類型的比賽,我相信你正在尋找的是這樣的:

@optionalobject.getOrElse(field) 
+0

這不起作用。這是說該領域不存在。但是,它必須存在。在輸出案例類時,它會顯示案例類的所有字段。 –

+0

@ Lilluda5編輯你的問題,並顯示更多的代碼。你如何聲明'optionalobject'和'field'? – estmatic

21

對於可以跨許多行(如果需要)略微更好的格式:

@optionalObject match { 
    case Some(o) => { 
    @o.field 
    } 
    case None => { 
    No field text/html/whatever 
    } 
} 

或者如果你不想顯示任何東西,如果該字段沒有定義:

@for(o <- optionalObject) { 
    @o.field 
} 
+1

_display的第二個代碼片段如果該字段不是defined_用例,那麼這個代碼就很可愛。我一直在說,「Option」是一個集合類型,可以讓你做這樣的事情。 – avik

0

另一種可能性是使用地圖,語法,我更喜歡用HTML

@pagination.next.map { next => 
    <a href="@Routes.paginated(next)"> 
    @HtmlFormat.escape("Next >>>") 
    </a> 
} 
0

有時混合起來,可能是方便與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> 
相關問題