Freemarker: ваши мнения?

JAVA*
Стоим перед выбором template engine. Есть люди рекомендующие freemarker. Я имел опыт общения с ним и он мне не очень понравился в виду своей малой похожести на xml и неочевидным синтаксическим сахаром.

Кто-нибудь может указать очевидные минусы/плюсы по сравнению с jsp/taglibs?
22 февраля в 11:46
1nd1go 30,5

отсортировано по дате по оценке
ответы (4)

0
alexeygrigorev #
Как по мне, так jsp с инклюдами + tiles — самое лучшее. Пробовал и Freemaker, и Velocity — всё не то… Очевидных минусов не укажу, но осадочек после использования последних остался. А в идеале хотелось бы что-то типа шаблонов Django — но для java ничего подобного не получилось найти.
осадочек после использования последних остался

Во-во.

Слабая поддержка в IDE, непозволяющая передвигаться между связанными шаблонами, «свободный» не-XML синтаксис усугубляющий это положение.

А также быстро превращающийся массивный набор ftl шаблонов в кашу из инструкций, приправленный кодом для логики во View.

Все это не добавляет радости, а бенефитов я не вижу. Т.е. интересно есть такой аргумент когда «Ну вот поэтому нам здесь именно Freemarker и нужен!»?
1nd1go, 22 февраля в 16:02
0
dborovikov #
Мне не понравилились во фримаркере генерируемые им сообщения при наличии ошибок в шаблоне и не понравилась поддержка IDE. А еще синтаксис какой-то сложный, хотя возможно это потому, что я не долго с ним общался.
0
dbmaster #
Мы работали с фримаркером. Он решал все наши задачи которые возникали. Однако это было 3-4 года назад.

Фримаркер можно было использовать вне servlet-контейнера. JSP 3-4 года назад выглядело более громоздко.

Плюс фримаркера — более простое написание библиотеки тэгов и использование closures (функций и макросов) в каком-то виде.

Grails не смотрели? grails.org/doc/latest/guide/theWebLayer.html#viewsAndTemplates
0
Sauron #
Последний раз работал с JSP версий 2.0, так-то может я какие-то важные вещи из JPS2.1/2.2 упустил — с ними имел дело только мельком. Но в целом так чтоб совсем радикально вроде ничего не поменялось.

Проблемы JSP:
1. Спагетти код
Скриптлеты = гарантированный спагетти код. Без них же часто толком не обойтись.
2. Громоздкий синтаксис
К примеру if/then/else в JSP обычно пишут JSTL-ным c:choose/c:when/c:otherwise. Это очень verbose и громоздко.
3. Проблематичность создания реюзабельного кода
Объявлять методы прямо в JSP странице можно, но их не вызовешь из другой JSP страницы. Написание таглибов в 2.0 было отдельным сложным таском, который не сравнится с написанием макроса в Velocity, где это дело элементарное.
Может .tag файлы JSP2.1 решают это, я не знаю.
4. Завязка на request/response и всевозможные context-ы.
В чём проблема? Например, у вас есть JSP страница, которая используется как темплит для рендера отчёта об исполнении какой-то задачи. Пока это делается по клику юзером кнопки в браузере — всё отлично.
Но вот появилась задача исполнять тот же таск регулярно с помощью планировщика, и отсылать этот же отчёт юзеру на email. Что делать? С Velocity/Freemarker/Jelly проблем не будет — тот же темплит будет реюзатся.
С JSP прийдётся всё переделывать.
5. Сложности спецификации — JSP2.2 появился аж в 2009-м году, и добавил вызовы методов с аргументами в EL — то, что было 100500 лет назад в темплитин енджайнах.
Меня здесь агитировали, что вызовы методов с аргументами — признак прохого дизайна, но я категорически не согласен.
Зато признак какого дизайна — наличие SQL тегов в JSTL например? Явно не хорошего.

Больше здесь:
stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el
adamgent.com/post/6091183966/jsp-el-2-1-versus-el-2-2

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.