2012-02-25 6 views
5

Плитки и Sitemesh выглядят довольно популярными, но этот материал действительно старый и выглядит ужасно по сравнению с текущими удивительными вещами, например. Ruby (ERB) или PHP (шаблон открытой мощности). В наши дни шаблонные движки допускают удобную настройку шаблонов (вставка переменных, автозапуска в зависимости от контекста, итерация через Iterables, доступ к свойствам бина) и макетирование (например, верхние и нижние колонтитулы и переопределение и добавление к некоторым частям, определенным в родительском) без какой-либо сложной конфигурации и без необходимо изменить текущий стек (например, ваш веб-фреймворк).JSP, Sitemesh and Tiles хардкор - любые альтернативы?

Пример parent.html:

<html> 
    <head> 
    <title> 
     <layout:part name="title"> 
     Default title 
     </layout:part> 
    </title> 
    <layout:part name="head" /> 
    </head> 
    <body> 
    <div class="menu" layout:part="menu"> 
     default menu 
    </div> 
    <div class="content" layout:part="content" /> 
    <div class="footer"> 
     (c) me 
    </div>  
    </body> 
</html> 

Пример child.html

<layout:extend file="parent.html"> 
    <layout:fill name="title"> 
    Custom title 
    </layout:fill> 
    <layout:fill name="contnet"> 
    the content 
    {$var} from model 
    </layout:fill> 
</layout:extend> 

Я ищу лучше Facelets, что не потребует от меня изменить весь стек - Я не собираюсь адаптировать весь проект к JSF или Wicket, чтобы использовать лучшие представления.

Механизм шаблонов не требует каких-либо дополнительных сервлетов или фильтров (без логики на основе URL). Я хочу использовать двигатель программно. Возможным вариантом использования является определение пользовательского ViewResolver весной 3.

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

Рамки могут быть на вершине JSP, но это не обязательно. Преимуществом является возможность использования taglib, предоставляемых другими фреймами (например, Spring).

Или, может быть, все уже есть в Sitemesh/Tiles, но нуждается в большой конфигурации? Если вы знаете какую-либо конфигурацию примера, которая позволяет достичь всех указанных целей, сообщите мне об этом.

Связанный вопрос: what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - мой вопрос также относится к шаблонам, и не ограничивается Spring Web MVC.

+0

Почему вы думаете, что плитки 2 в старом стиле? Я просто забыл о ERB, но, похоже, вы можете достичь таких же функций, например, с помощью Tiles 2 и Velocity. Что тебе нужно? – sinuhepop

+0

Просить предложений о каркасе здесь не рекомендуется. Если вы хотите отредактировать все запросы для этого и задайте вопрос, на который можно ответить здесь, не щелкая за пределами сайта, сделайте это и отметьте для повторного открытия. Благодарю. – Will

ответ

3

Я всегда supported the idea that JSP is a good-enough view technology, который также можно использовать для шаблонов (с использованием входит)

Для программной обработки я использую скорость, которая является довольно простым и понятным.

Лучшая технология просмотра, с которой я столкнулся в мире Java, представляет собой GSP Grails, но вам может потребоваться перенести весь ваш веб-слой на grails, что не всегда является вариантом.

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

+2

Я читал это раньше. Я должен признать, что наличие сложного стека, состоящего из Sitemesh, Tiles, Velocity и большого количества файлов конфигурации, не очень хорошо. Однако простые JSP ничего не помогают с макетированием и довольно слабы с шаблонами. Будучи привыкшим к хорошим механизмам шаблонов из Ruby, PHP, довольно сложно не иметь эквивалент в Java - стек, над которым я работаю большую часть времени. :( – Nowaker

+1

grails хорошо для этого - (g) рельсы – Bozho

+3

Это целая стопка.Я не вижу причины, по которой разработчики должны перенести существующий проект в JSF только для использования Facelets, для Grails просто для использования GSP и т. Д. – Nowaker