Ответ 1
Механизм шаблонов в игре 2.0 напрямую поступает из модуля воспроизведения 1.0 scala. Если вы все еще задаетесь вопросом, какие преимущества делает функциональный язык, такой как scala, приводит к картине, хорошо это, безусловно, одна из областей, где он сияет.
Демонстрация:
В синтаксисе scala тег - это не что иное, как вызов функции. что интересно, что фрагменты html считаются самими функциями, что позволяет использовать самые мощные конструкции замещения.
Определите html-страницу под названием mytag.scala.html
Файл: приложения/просмотров/mytags/mytag.scala.html
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
Тег выше принимает 3 параметра в 2 различных группах параметров:
- Уровень, представленный строкой (по умолчанию "ошибка" )
- Индекс
- Наконец, функция называется body, которая принимает строковый параметр и возвращает HTML-код. Обратите внимание, что тело определено в собственной группе параметров. это эквивалентно тому, что мы знаем в j2ee как фрагмент jsp.
Теперь посмотрим, как мы можем использовать этот тег:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
Прежде чем мы сможем использовать тег (или функцию), нам нужно сообщить Игроку о том, где он находится: это цель оператора import. Обратите внимание, что местоположение (путь) файла тега не имеет значения, если вы настраиваете местоположение импорта, как и в пакетах Java.
Выполняет сам вызов, который является простым. Обратите внимание, однако, что мы передаем параметризованный фрагмент html в тег.
Для получения дополнительной информации вы можете найти документацию scala на этом URL
Play 2.0 в конечном итоге будет иметь собственную документацию.