2010-05-17 7 views
1

Возможно ли интегрировать sitemesh и плитки 2.1 с весной mvc? Я хочу комбинировать макет с плитки, а затем украсить sitemesh.sitemesh и плитки 2.1 интеграция с пружиной 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> 

Затем я настраиваю sitemesh в 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> 

А потом я добавил декоратор

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

+0

походит на значение по умолчанию, которое поставляется с дистрибутивом, я заметил, что если я добавлю конфигурацию в путь, который не управляется весной, он работает, также если я использую org.springframework.web.servlet.view.InternalResourceViewResolver, это works – atomsfat

ответ

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

+0

Я в любой форме просматриваю журналы sitemesh? – atomsfat

+0

Я изменил картину, и она работает <декоратора страница = «приложение/ThemeManager/theme.jsp» имя = «тема»> * \t – atomsfat

 Смежные вопросы

  • Нет связанных вопросов^_^