Лучшая альтернатива плиткам Apache
Я ищу фреймворк, который лучше и проще в использовании, чем плитки Apache (которые до сих пор я использовал пару раз).
С плитками кажется, что когда у меня есть 100 действий, мне нужно создать 100 файлов jsp и создать 100 определений в tiles.xml
.
есть ли лучшая структура для управления моими шаблонами? Я хочу создать, например, 2 шаблонов:
a) меню и столбец для содержимого
B) меню, столбец для содержания, правый столбец с баннер
В обоих шаблонах меню является постоянной. В template b
, правый столбец является постоянным, поэтому отличается только столбец содержимого. Для этого простого примера I не хочу определите каждый файл JSP, который расширяет template a
(только чтобы обеспечить тело). Это хромой ИМО. Или, может быть, я хромаю, и я могу определить шаблон по умолчанию в плитках Apache, и я просто не использую его правильно. В любом случае, вся помощь приветствуется.
5 ответов
в целом, я бы порекомендовал SiteMesh над плиткой.
здесь как настроить SiteMesh 3
вы можете использовать плитки для шаблонов на странице, но использовать SiteMesh для шаблона всего сайта. Тем не менее...
как сделать плитки сосать меньше:
используйте Соглашение над конфигурацией. Например, поместите свои определения в
webapp/WEB-INF/tiles.xml
и нет необходимости говорить плитки, где это есть.использовать подстановочные знаки:
<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 и
- состав определений.