Интеграция Spring MVC и Tiles

Во-первых, я знаю, что Spring MVC имеет хорошую интеграцию с Tiles. Но моя проблема, как показано ниже:

Я настроил свой web.xml как

<servlet>
    <description>Spring Dispatcher Servlet</description>
    <servlet-name>Dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

И мой Dispatcher-servlet.xml настроен так:

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions">
        <list>
            <value>
                /WEB-INF/tiles-defs/base-layout.xml
            </value>
            <value>
                /WEB-INF/tiles-defs/application-layout.xml
            </value>
        </list>
    </property> 
</bean>

<bean id="tilesViewResolver" 
            class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" 
            value="org.springframework.web.servlet.view.tiles2.TilesView" />
    <property name="order" value="1" />
</bean>

Обратите внимание, что сервлет Dispatcher сопоставлен для обработки всех запросов. Я не хочу настраивать его таким образом, чтобы он мог обрабатывать только определенные запросы, например, *.hmtl или *.do или *.form, потому что я хочу, чтобы мой URL был аккуратным, это требование.

У меня есть определение плитки, как показано ниже

<tiles-definitions>

    <definition name="publicLayout" .
            template="/WEB-INF/tiles-layouts/publicLayout.jsp">
        <put-attribute name="title" value="Home Page" />
        <put-attribute name="body" value="" />
    </definition>

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

</tiles-definitions>

Теперь, когда я делаю HTTP-запрос, чтобы сказать URL "http://localhost:8080/myapp/home", аннотированный контроллер, сопоставленный с сопоставлением запроса "/home", обрабатывает запрос и, наконец, возвращает ModelAndView с именем представления "home". ".

Наконец, когда сервлет-диспетчер пытается отобразить страницу, он говорит

Не найдено сопоставление для HTTP-запроса с URI [/myapp/WEB-INF/tiles-layouts/publicLayout.jsp]

Но когда я изменяю свое отображение сервлетов-диспетчеров так, что *.html, оно работает нормально, чего я не хочу делать.

Что тут можно сделать.?? Я думаю, что это очень распространенная проблема.

1 ответ

Для обработки всех запросов, кроме запросов на JSP, вам необходимо использовать

<url-pattern>/</url-pattern>
Другие вопросы по тегам