Я отчаянно ищу механизм просмотра Java HTML, который удовлетворяет трем основным требованиям:
- Поддержка основных страниц шаблонов.
- Шаблоны HTML можно использовать в качестве подпредставлений внутри других шаблонов.
- Шаблоны HTML не обязательно должны поддерживаться файлами конфигурации или классами Java.
Это для веб-приложения Java, которое в основном состоит из страницы только для чтения и нескольких страниц с формами. Скорее всего, я буду использовать его в сочетании с MVC-фреймворком.
Главные шаблоны страниц
Основная структура HTML должна определяться главной HTML-страницей. Различные страницы просто предоставляют основное содержимое, которое помещается на главную страницу для создания окончательной страницы. Это больше, чем просто включение верхнего и нижнего колонтитула.
Подпредставления
Страница должна иметь возможность использовать другие HTML-страницы/шаблоны в качестве подпредставлений в своем собственном контенте. Он должен иметь возможность передавать по крайней мере один параметр для предоставления данных, которые должны отображаться в подпредставлении. Кроме того, должна быть возможность рекурсивно использовать дополнительные подвиды внутри подвида. Опять же, это выходит за рамки простого механизма include.
Без поддержки
Шаблоны HTML должны состоять из одного файла, который в основном представляет собой страницу HTML или XML, где определенные части будут заменены на основе предоставленных данных. Им не нужны дополнительные (для каждого шаблона) файлы конфигурации. И у них не должно быть необходимости реализовывать какие-либо классы Java для поддержки.
Я уже ознакомился со многими механизмами шаблонов Java. Но ни один из них не отвечает этим требованиям. (Однако в мире .NET ASP.NET MVC с механизмом представления Razor идеально подойдет.)
Обновление:
До сих пор я рассматривал следующие движки (пожалуйста, дайте мне знать, если я упустил из виду способ достижения моих требований с одним из этих движков):
- JSP: имеет очень простой механизм включения без основных шаблонов или надлежащей области видимости для подпредставлений и т. д.
- Скорость: имеет немного усовершенствованный механизм включения, но не содержит эталонных страниц.
- FreeMarker: механизм включения, без мастер-страниц.
- Гобелен: хорошие подпредставления на основе компонентов, а также механизм шаблонов. Тем не менее, не представляется возможным легко использовать часть механизма шаблонов без остальной части фреймворка, который слишком ориентирован на страницы, чтобы его можно было комбинировать с фреймворком MVC.
- Плитки: требуется две страницы JSP на последнюю страницу. Два слоя (плитки и jsp) делают его слишком сложным, особенно для подвидов.
Обновление (2): я изменил некоторые термины: движок представления вместо механизм шаблонов, подпредставления вместо компоненты.