Пользовательский тег в playframework2.0 или выполнение равных в шаблоне - PullRequest
0 голосов
/ 25 марта 2012

Мне нужно выполнить сравнение равных в моем шаблоне, чтобы сделать условный рендер.

Например, у меня есть <li class="active">. Здесь я хотел бы, чтобы active отображался, только если @request.path и @controllers.routes.Application.action() равны, иначе пустая строка будет в порядке.

оператор if, как описано в документах , кажется, ограничен в распознавании парантеза и, следовательно, не работает.

В качестве альтернативы, если вы могли бы помочь мне с созданием пользовательского тега, это также может сработать. Нет документации о том, как это сделать. Я предпочитаю Java. Если есть альтернатива scala, пожалуйста, допустите ошибку в многословии, поскольку я еще не выяснил это.

Спасибо.

1 Ответ

1 голос
/ 25 марта 2012

Без пользовательского тега вы можете попробовать что-то вроде этого в своем шаблоне:

<li class="@("active".when(request.path == controllers.routes.Application.action().toString()))">

В примерах приложений есть пример (samples / java / forms / app / views / main.scala.html).).
Не забывайте toString (), потому что action () возвращает Call, а не String).

Пользовательский тег для выполнения, который может быть:

@menu_element(name: String, route: Call) = {
 <li class="@("active".when(route.toString() == request.path))"><a href="@route">@name</a></li>
}

Пример использования:

<ul>
 @menu_element("Home", controllers.routes.Application.index)
</ul>
...