2010-05-17 97 views
1

是否有可能將sitemesh和tiles 2.1與spring mvc集成? 我想用瓷磚合成佈局,然後用sitemesh裝飾。sitemesh和瓷磚2.1與spring的集成MVC

我正在使用那樣的瓷磚。

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/layouts/layouts.xml</value> 
       <value>/WEB-INF/views.xml</value> 
       <value>/WEB-INF/hotels/views.xml</value> 
       <value>/WEB-INF/hotels/booking/views.xml</value> 
           <value>/WEB-INF/cliente/views.xml</value> 
      </list> 
     </property> 
    </bean> 

然後我在xml中配置sitemesh。

<filter> 
     <filter-name>sitemesh</filter-name> 
     <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>sitemesh</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

然後我加裝飾

<?xml version="1.0" encoding="UTF-8"?> 
<decorators defaultdir="/styles"> 


    <decorator page="application/themeManager/theme.jsp" name="theme"> 
     <pattern>/spring/hotels/index</pattern> 

    </decorator> 


</decorators> 

但是,這並不什麼都不做,我認爲瓷磚避免SiteMesh的處理頁面,如何做到這一點?

這個sitemesh.xml我只是用自帶的例子

<sitemesh> 
    <property name="decorators-file" value="/WEB-INF/decorators.xml"/> 
     <excludes file="${decorators-file}"/> 
    <!--<excludes file="/WEB-INF/decorators.xml"/>--> 

    <page-parsers> 
     <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 
    </page-parsers> 

    <decorator-mappers> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper"> 
      <param name="property.1" value="meta.decorator" /> 
      <param name="property.2" value="decorator" /> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper"> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper"> 
      <param name="match.MSIE" value="ie" /> 
      <param name="match.Firefox" value="mozilla" /> 
      <param name="match.Opera" value="opera" /> 
      <param name="match.Lynx" value="lynx" /> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper"> 
      <param name="decorator" value="printable" /> 
      <param name="parameter.name" value="printable" /> 
      <param name="parameter.value" value="true" /> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper"> 
      <param name="decorator" value="robot" /> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper"> 
      <param name="decorator.parameter" value="decorator" /> 
      <param name="parameter.name" value="confirm" /> 
      <param name="parameter.value" value="true" /> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper"> 
     </mapper> 

     <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> 
      <param name="config" value="${decorators-file}" /> 
     </mapper> 

    </decorator-mappers> 

</sitemesh> 
+0

你的sitemesh.xml文件是什麼樣的? – skaffman 2010-05-17 16:52:20

+0

就像默認配置一樣,我注意到如果我將配置添加到不受Spring管理的路徑中,它也可以工作,如果我使用org.springframework.web.servlet.view.InternalResourceViewResolver它作品 – atomsfat 2010-05-17 18:49:08

回答

1

SiteMesh的是有點脆弱的默認值,你沒有得到多少記錄從它的信息,所以它可能會非常棘手確定是否有任何事情正在發生。

我的猜測是裝飾被繞過,因爲內容類型不匹配。你sitemesh.xml文件包含以下條目:

<page-parsers> 
    <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 
</page-parsers> 

換句話說,裝飾將僅響應內容類型爲text/html調用。

你說過,如果你將它指向一條不通過Spring的路徑,我認爲這是因爲Spring正在改變內容類型,因此繞過了修飾器。

嘗試添加以下附加項sitemesh.xml

<parser content-type="text/html;charset=ISO-8859-1" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 

注意charset添加到內容類型。 Spring MVC對於內容類型來說是相當苛刻的,我懷疑它正在將其改變成包含字符集的東西。如果您的本地字符集不是ISO-8859-1,那麼嘗試一下。您可以根據需要添加儘可能多的<parser>條目。

+0

它不起作用,我添加了字符集ISO-8859-1和另一個用utf-8解析,但仍然沒有工作 – atomsfat 2010-05-17 22:09:36

+0

我有任何形式查看sitemesh的日誌? – atomsfat 2010-05-17 22:13:30

+0

我改變了模式,它的工作原理 <裝飾頁= 「應用/ themeManager/theme.jsp」 NAME = 「主題」> * \t – atomsfat 2010-05-17 22:26:43