我有一個基於Spring 3.0.6的webapp,可以在Tomcat 7.0上正常工作。mvc:視圖控制器在Spring Tiles中導致PageNotFound2
的web.xml
調度定義如下:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
調度器定義了在通常的方式的視圖解析:
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-def.xml</value>
</list>
</property>
</bean>
我已經控制器註解爲@RequestMapping("/home")
和在限定的"home"
視圖tiles-def.xml
。當我將瀏覽器指向/myapp/home.html
時,Tiles頁面打開。
如果我添加<mvc:resources mapping="/resources/**" location="/resources/" />
或<mvc:view-controller path="/" view-name="home.html"/>
我的調度員的XML文件,將瀏覽器指向/myapp/home.html
導致404的日誌說:
21:34:22,128 WARN PageNotFound:947 – No mapping found for HTTP request with URI [/myapp/home.html] in DispatcherServlet with name 'dispatcher'
我在做什麼錯?
非常感謝
您可以在DispatcherServlet.doDispatch中設置斷點並查看發生了什麼。 :) –
嗨鮑里斯,我試圖調試,但調度員servlet的內部工作是非常複雜的理解。問題是我的MVC控制器中的方法是'void',並且沒有返回任何字符串,所以框架試圖使用路徑自動解析視圖。我改變了這個明確返回的Tiles2視圖名稱,並且一切都重新工作。我吸取了教訓,從不讓春天猜到什麼...... ;-) – Ciaccia
好的。請張貼您的結果作爲答案並關閉問題))。 –