2010-05-17 28 views
1

Est-il possible d'intégrer sitemesh et carreaux 2.1 avec ressort mvc? Je veux composer la disposition avec des tuiles, puis décorer avec sitemesh.sitemesh et carreaux 2.1 intégration avec ressort MVC

J'utilisais des carreaux comme ça.

<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> 

Ensuite, je configure sitemesh dans le fichier XML.

<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> 

Et puis j'ajouté décorateur

<?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> 

Mais cela ne fait rien, je pense pas que les carreaux évitent de SiteMesh pour traiter la page, comment faire?

Ce que je viens de la sitemesh.xml en utilisant la valeur par défaut qui vient avec les exemples

<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

à quoi ressemble votre fichier sitemesh.xml? – skaffman

+0

est comme la valeur par défaut, qui vient avec la distribution, j'ai remarqué que si j'ajoute la configuration à un chemin qui n'est pas géré au printemps ça marche, même si j'utilise org.springframework.web.servlet.view.InternalResourceViewResolver fonctionne – atomsfat

Répondre

1

SiteMesh est un peu fragile, et vous ne recevez pas beaucoup d'informations de la connexion, donc il peut être difficile à déterminer si quelque chose se passe réellement. Je pense que le décorateur est contourné parce que le type de contenu ne correspond pas. Votre fichier sitemesh.xml contient l'entrée suivante:

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

En d'autres termes, le décorateur ne seront évoquées que si le type de contenu réponse est text/html. Vous avez dit que cela fonctionne si vous pointez sur un chemin qui ne passe pas par Spring, et je pense que c'est parce que Spring change le type de contenu, et contourne donc le décorateur.

Essayez d'ajouter la mention supplémentaire suivante à sitemesh.xml:

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

Notez le charset ajouté au type de contenu. Spring MVC est assez fastidieux avec les types de contenu, et je pense qu'il est en train de changer quelque chose qui inclut le charset. Si votre charset local est quelque chose d'autre que ISO-8859-1, alors essayez cela. Vous pouvez ajouter autant d'entrées <parser> que vous le souhaitez.

+0

Cela ne fonctionne pas, j'ai ajouté le jeu de caractères ISO-8859-1 et une autre analyse avec utf-8, mais toujours pas travaillé – atomsfat

+0

J'ai une forme quelconque pour voir les journaux de sitemesh? – atomsfat

+0

J'ai changé le modèle et il fonctionne * \t – atomsfat