Antwort

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

Nach Ihren Tags zu urteilen, verwenden Sie eine Play 2.x-Variante, verweisen jedoch auf die Dokumentation eines für Play 1.x bestimmten Moduls.

Ihre Arten Spiel Angenommen, ich glaube, was Sie suchen, ist so etwas wie:

@optionalobject.getOrElse(field) 
+0

Dies funktioniert nicht. Es sagt, dass das Feld nicht existiert. Es muss jedoch existieren. Wenn nur die Fallklasse ausgegeben wird, werden alle Felder der Fallklasse angezeigt. –

+0

@ Lilluda5 Bearbeiten Sie Ihre Frage und zeigen Sie mehr von Ihrem Code. Wie deklarieren Sie 'optionObject' und' field'? – estmatic

21

Für etwas schöne Formatierung, die viele Zeilen erstrecken kann (wenn Sie müssen):

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

Oder wenn Sie nichts angezeigt werden soll, wenn das Feld nicht definiert ist:

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

Das zweite Code-Snippet für das _display nichts, wenn das Feld nicht definiert ist _ Anwendungsfall ist schön. Ich beschönige weiterhin die Tatsache, dass '' Option'' ein Sammlertyp ist, der es ermöglicht, solche Dinge zu tun. – avik

0

Eine weitere Möglichkeit Karte verwendet, Syntax Ich ziehe es für mit HTML up Misch

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

Manchmal kann es zweckmäßig sein, einen kurzen Helfer zu schreiben, wenn sie mit Option Umgang den Template-Code entrümpeln:

// 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() 
     } 
    } 

Dann kann die Vorlage diese Hilfsmethode direkt wie

// some view.scala.html file 
    <div @Helper.maybeAttribute("id",maybeId)> 
    </div>