Лучшая альтернатива плиткам Apache

Я ищу фреймворк, который лучше и проще в использовании, чем плитки Apache (которые до сих пор я использовал пару раз).

С плитками кажется, что когда у меня есть 100 действий, мне нужно создать 100 файлов jsp и создать 100 определений в tiles.xml.

есть ли лучшая структура для управления моими шаблонами? Я хочу создать, например, 2 шаблонов:

a) меню и столбец для содержимого
B) меню, столбец для содержания, правый столбец с баннер

В обоих шаблонах меню является постоянной. В template b, правый столбец является постоянным, поэтому отличается только столбец содержимого. Для этого простого примера I не хочу определите каждый файл JSP, который расширяет template a (только чтобы обеспечить тело). Это хромой ИМО. Или, может быть, я хромаю, и я могу определить шаблон по умолчанию в плитках Apache, и я просто не использую его правильно. В любом случае, вся помощь приветствуется.

5 ответов


в целом, я бы порекомендовал SiteMesh над плиткой.

здесь как настроить SiteMesh 3

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

как сделать плитки сосать меньше:

  1. используйте Соглашение над конфигурацией. Например, поместите свои определения в webapp/WEB-INF/tiles.xml и нет необходимости говорить плитки, где это есть.

  2. использовать подстановочные знаки:

<definition name="default" template="/WEB-INF/templates/default.jsp">
    <put-attribute name="titleKey" value=""/>
    <put-attribute name="body" value=""/>
</definition>

<definition name="*" extends="default">
    <put-attribute name="titleKey" value="{1}.title"/>
    <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>

если ваш контроллер возвращает имя вида index, это будет соответствовать определению *, и использовать файл JSP /WEB-INF/views/index.jsp для тела и используйте свойство message index.title.

если ваш контроллер возвращает имя вида contact-us, это будет соответствовать определению *, и использовать файл JSP /WEB-INF/views/contact-us.jsp для тела и используйте свойство message contact-us.title

в шаблоне, добавьте:

<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>

и

<title><spring:message code="${titleKey}"/></title>

добавить ReloadableResourceBundleMessageSource bean в контекст сервлета приложения.

создать файл /src/main/resources/messages.properties, С содержанием типа:

index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us

другой подход Sitemesh. Он был разработан для сетки представлений, где вы не можете изменить оригинал, поэтому это больше структура преобразования/украшения html, чем структура шаблонов, такая как плитки.

по моему личному мнению, плитки-лучший подход для приложений, и я бы попытался реализовать какой-то решатель (основанный на некоторых соглашениях об именах), который делает XML-файлы устаревшими, но это не было вопрос.

@See:это старые знакомства показывает, как работает SiteMesh.


(аналог этой)

вам не нужно определение для каждого действия.

эта конфигурация шаблона является зависанием от плиток - 1 дней. Это действительно не нужно с плитками-2, когда были введены подстановочные знаки, и особенно с плитками-3 вместе с OptionsRenderer.

здесь учебник это поможет вам с

  • весной плитки интеграции,
  • определения с подстановочными знаками,
  • реализация резервного шаблона с помощью OptionsRenderer и
  • состав определений.

Я закончил использование JSF + Facelets. Я объединил их с Spring MVC и он работает как шарм.


основываясь на опыте, я настоятельно рекомендовал Apache Wicket.