まず、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>
URL「http://localhost:8080/myapp/home」と言うHTTPリクエストを作成すると、リクエストマッピング「/home」でマッピングされた注釈付きコントローラーがリクエストを処理し、最後にビュー名「home」のModelAndViewを返します"。
最後に、ディスパッチャーサーブレットがページをレンダリングしようとすると、
URI [/myapp/WEB-INF/tiles-layouts/publicLayout.jsp] の HTTP 要求のマッピングが見つかりません
しかし、ディスパッチャ サーブレット マッピングを *.html のように変更すると、正常に動作しますが、これはやりたくありません。
ここで何ができますか?? 非常に一般的な問題だと思います。