2013-12-12 78 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> 
相关问题