Spielen 2.0-templating - Scala `match` und `val` kompilieren Sie nicht in einem view-template
Ich habe den folgenden code in Spielen 2.0 Vorlage:
@content.toString.lines.map{
case line => //i put `case` here as another attempt to make it work
line match {
case "" => @Html("")
case _ => <li>@Html(line)</li> /*CRASH*/
}
}
Es scheitert an der markierten Linie, sagen, dass not found: value line
. Die zweite Variante:
@for(line <- content.toString.lines){
@line match { /*CRASH*/
case "" => @Html("")
case _ => <li>@Html(line)</li>
}
}
scheitert an der markierten Linie, behauptet, dass 'case' expected but identifier found
.
UPDATE:
Gleiche gilt für val
:
@val headID = "head"
kommt mit illegal start of simple expression
.
UPDATE ENDET
Ich würde gerne wissen, was mache ich falsch und wie man richtig implementieren die match-case
Struktur und val
Zuordnung im Spiel der templates?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
match
Ausdrücke in VorlagenMüssen Sie einschließen in geschweifte Klammern ("{" und "}") der HTML-Inhalt Ihrer Vorlagen:
In Ihrem speziellen Fall, wird der folgende code besser Lesen IMHO:
Die Definition von Werten
Können Sie Werte festlegen, mit der
defining[T](value: T)(usage: T => Html)
Helfer:Fand ich, dass ein {} außen zu umschließen gesamte code funktionieren würde
folgenden scheint zu funktionieren für mich
hart auf die Augen, aber Sie können sich
target/scala-2.9.1/src_managed/main/views/html/index.template.scala
in den play-Projekt-Verzeichnis, um zu sehen, was seine Umsetzung in string-literalen.Als für val-Zuweisung, weiß ich nicht, aber @definieren kann helfen
Andere häufige Ursache dieses Fehlers ist der Ausgangspunkt Klammer in einer separaten Zeile: