Есть ли язык шаблонов, похожий на веб-приложения Razor для Java Spring?
Я влюблен в шаблоны бритв в .NET MVC 3. Есть ли что-то близко для java?
Я бы искал что-то, где я мог бы избежать использования тегов JSTL и вместо этого сделать что-то вроде этого:
<c:if test=${bla}>
<span>my html</span>
</c:if>
и вместо этого
@if(bla)
{
<span>my html</span>
}
Я предполагаю, что должен быть аналогичный
Ответы
Ответ 1
Я хотел бы представить свою работу: механизм шаблонов ритма, легкий и супер быстрый механизм шаблонов в Java с помощью Razor, как синтаксис. Rythm имеет богатые возможности и поддерживает макет страницы/наследование, настраиваемые теги (либо в шаблоне, либо в классе java), динамическая перезагрузка в режиме dev и многое другое. Тест показывает, что Rythm в 2 - 3 раза быстрее, чем Velocity на обычной странице!
API прост:
-
выполнить рендеринг со встроенной строкой:
String output = Rythm.render("@args String who;hello @who!", "world");
-
рендеринг с файлом шаблона:
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. Проверьте это на http://fiddle.rythmengine.org
Обновления 20130513
- имя пакета изменено с
com.greenlaw110.rythm
на
org.rythmengine
, изменился идентификатор группы maven.
- Оформить заказ на новый веб-сайт проекта: http://rythmengine.org
Ответ 2
Насколько я знаю, в этом мире Java нет такого, что выглядит и ведет себя как Razor.
Из того, что я могу понять, механизм шаблонов в Razor не только анализирует "заполнители" в статическом тексте, например #xxx
в Velocity или ${xxx}
в JSP.
Вместо символа @
в Razor действует как переключатель для переключения на парсер языка хоста (VB и С# в случае Razor), распознавая полный синтаксис элемента, непосредственно следующего за знаком @
. Это позволяет Razor распознавать как имена объектов, переданных движку, так и синтаксические структуры, например, для циклов и условных обозначений.
Это открывает всю мощь языка хостинга для шаблонов Razor, что может быть опасной вещью в неправильных руках...
Большинство шаблонизационных движков на Java-стороне мира заведомо выбрали строгое разделение бизнес-логики от проблем с шаблонами и, таким образом, имеют очень ограниченную или вообще не поддерживают динамические функции, такие как циклирование или условные выражения в своих "языковых" шаблонах, предпочитая декларативный стиль по динамическому.
Ответ 3
Spring поддерживает несколько языков шаблонов:
Подробнее о том, как интегрироваться с Spring, см. на этой странице.
Кроме того, StringTemplate, который не упоминается в официальной документации Spring, можно использовать как механизм шаблона Spring.
И если вы действительно хотите разразиться, здесь страница с примерно одним базируемым движком шаблонов.
Ответ 4
Взгляните на twirl, механизм шаблона платформы воспроизведения отделен от фреймворка.
Пример:
@if(items.isEmpty) {
<h1>Nothing to display</h1>
} else {
<h1>@items.size items!</h1>
}
Ответ 5
Попробуйте взглянуть на скорость (http://velocity.apache.org)