Как автоматизировать импорт тела с помощью Apache Tiles и Spring MVC - PullRequest
1 голос
/ 23 февраля 2011

У меня есть следующий файл tile-def.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>

<definition name="contact" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" />
</definition>

<definition name="hello" extends="default">
    <put-attribute name="body" value="/WEB-INF/jsp/hello.jsp" />
</definition>
</tiles-definitions>

Как видите, на всех моих страницах меняется только тело.Есть ли способ автоматизировать это?(поэтому он автоматически включает в себя jsp с именем запрашиваемой страницы или страницу с ошибкой, если она не существует?)

Спасибо!

РЕДАКТИРОВАТЬ: Подробнее о том, что я хочуdo:

Как это сейчас: Для каждой новой страницы моего веб-приложения я должен добавить новую в мой tile-def.xml.И каждый раз, единственное, что он делает, это устанавливает тело с моей страницей контента.

Что я хотел бы сделать: просто иметь одно определение по умолчанию, которое автоматически выбирает страницу для отображения, что-то вроде этого:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="default" template="/WEB-INF/jsp/layout.jsp">
    <put-attribute name="title" value="my webapp" />
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
    if(myPageName exists){
        <put-attribute name="body" value="/WEB-INF/jsp/" + myPageName + ".jsp" />
    else{
        <put-attribute name="body" value="/WEB-INF/jsp/error404.jsp" />
    }
    <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
</definition>
</tiles-definitions>

Где myPageName будет именем запрашиваемой страницы (если URL был "http://www.mysite.com/contact.html",", тогда myPageName было бы "contact". Если это было "http://www.mysite.com/info.html",, тогда myPageName было бы" info ").

Как я могу это сделать?

1 Ответ

1 голос
/ 31 августа 2012

Ознакомьтесь с примером динамических плиток на странице springbyexample.org .DynamicTilesView делает именно то, что вы хотите (см. Пример конфигурации здесь ).Полный пример Dynamic Tiles можно найти здесь на github

...