2011-04-20 194 views
0

首先我知道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> 

我的調度-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> 

請注意,調度員servlet被映射來處理所有請求。我不想配置它,因此它只能處理特定的請求,例如* .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://本地主機:8080/MyApp的/家」,以請求 - 映射一個註解控制器映射「/ home」處理請求並最終返回一個ModelAndView,視圖名稱爲「home」。

最後,當調度員的servlet試圖渲染頁面,它說

沒有映射發現HTTP請求的URI與 [/myapp/WEB-INF/tiles-layouts/publicLayout.jsp]

但是,當我更改我的調度程序servlet映射,使*。html,其工作正常,我不想這樣做。

這裏可以做些什麼。我認爲它是一個非常普遍的問題。

回答

2

要處理所有的請求,除了對JSP的請求,你需要使用

<url-pattern>/</url-pattern>