Существует ли язык шаблонов, похожий на Razor для веб-приложений Java Spring? - PullRequest
21 голосов
/ 25 августа 2011

Я влюблен в шаблоны бритвы в .NET MVC 3. Есть ли что-нибудь близкое для java?

Я бы искал что-то, где я мог бы избежать использования тегов JSTL, и вместо этого делал бы что-то вроде этого:

<c:if test=${bla}>
   <span>my html</span>
</c:if>

и вместо этого

@if(bla)
{
  <span>my html</span>
}

Я предполагаю, что должно быть подобное

Ответы [ 5 ]

26 голосов
/ 07 марта 2012

Я хотел бы представить мою работу: Шаблонизатор Rythm , легкий и супер быстрый шаблонизатор в Java, использующий синтаксис Razor . Rythm имеет богатые возможности и поддерживает макет страницы / наследование, настраиваемые теги (в шаблоне или в классе Java), динамическую перезагрузку в режиме разработки и многое другое. В тесте показано, что Rythm в 2–3 раза быстрее, чем Скорость на обычной странице!

API прост:

  1. рендеринг со встроенной строкой:

    String output = Rythm.render("@args String who;hello @who!", "world");

  2. визуализация с файлом шаблона:

    String output = Rythm.render("hello.txt", "world");

Краткое введение в Rythm: http://software -lgl.blogspot.com.au / 2012/03 / rythm-easy-to-use-high-performance-java.html

Обновления 20120701

В последней версии появилась функция под названием " String Interpolation Mode ", которая позволяет выполнять очень легкую интерполяцию строк следующим образом:

String result = Rythm.render("hello @who!", "world");

A полнофункциональная демонстрация размещена на GAE: http://play -rythm-demo.appspot.com /

Обновления 20130406

Веб-сайт rythm fiddle сейчас в сети, и вы можете использовать его для изучения синтаксиса Rythm. Проверьте это в http://fiddle.rythmengine.org

Обновления 20130513

  • имя пакета изменено с com.greenlaw110.rythm на org.rythmengine, идентификатор группы maven изменился соответственно
  • Оформить заказ на новый сайт проекта: http://rythmengine.org
7 голосов
/ 30 ноября 2011

Насколько я знаю, в этом мире Java нет ни одного, который выглядит и ведет себя так же, как Razor.

Из того, что я могу понять, движок шаблонов в Razor не только анализирует "заполнители" встатический текст, такой как #xxx в Velocity или ${xxx} в JSP.

Вместо этого символ @ в Razor действует как переключатель для переключения на синтаксический анализатор языка хостинга (VB и C # в случае Razor), распознавая полный синтаксис элемента сразу после знака @.Это позволяет Razor распознавать как имена объектов, переданных в движок, так и синтаксические структуры, такие как циклы и условные выражения.

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

Большинство движков шаблонов в Java-среде мира сознательно решили строго отделить бизнес-логику от шаблонизирующих задач и, таким образом, имеют очень ограниченную поддержку или вообще не поддерживают динамические функции, такие как циклы илиусловные выражения в их шаблоне "languages", выбирая декларативный стиль вместо динамического

4 голосов
/ 26 августа 2011

Spring поддерживает несколько языков шаблонов:

Для получения дополнительной информации о том, какдля интеграции с Spring см. эту страницу .

Кроме того, есть StringTemplate , который, хотя и не упоминается в официальной документации Spring, может использоваться как движок шаблонов Spring.

И если вы действительно хотите взбеситься, вот страница с еще около миллиарда других шаблонизаторов.

3 голосов
/ 27 июня 2013

Взгляните на twirl , движок шаблонов Play Framework, отделенный от Framework.

Пример:

@if(items.isEmpty) {
  <h1>Nothing to display</h1>
} else {
  <h1>@items.size items!</h1>
}
2 голосов
/ 25 августа 2011

Попробуйте взглянуть на скорость (http://velocity.apache.org)

...