2010-07-05 4 views
2

J'ai essayé de rendre la vue de tuiles avec UrlBasedViewResolver pendant des heures. Quelqu'un peut-il me montrer comment c'est fait? Je suis généralement en train de travailler sur cetteComment montrer tiles2.tilesview au printemps mvc3

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"></property> 
    <property name="prefix" value="/WEB-INF/jsp/"></property> 
    <property name="suffix" value=".jsp"></property> 
    <property name="order" value="1"/>    
</bean> 


<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> 
    <property name="basename" value="views"/> 
    <property name="order" value="0"/> 
</bean> 

et dans mon fichier views.properties, je l'aurais mes autres chemins de vue qui seraient rendus par jstlView. voici l'exception qu'il donne

javax.servlet.ServletException: Could not resolve view with name 'welcome' in servlet with name 'epub' 
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

cela ne fonctionnerait tout simplement pas. Il dit qu'il ne peut pas rendre la vue. Je sais que ce n'est pas à cause de l'enchaînement de 2 résolveurs de vue et non pas à cause de la config. Parce que quand je définis la classe de vue de tile dans le fichier view.properties cela fonctionnerait. Donc je suppose que urlbasedviewresolver et tilesview ne peuvent pas fonctionner ensemble d'une certaine manière. Je vais avoir beaucoup de mises en page de tuiles donc ce n'est pas vraiment beau de les définir toutes dans mon fichier de propriétés (j'ai peu de pages jsp normales, donc c'est bon d'utiliser resourceBundleViewResolver) Des idées?

Répondre

2

va Voici ce que vous devez mettre en place Tiles (je suppose que vous utilisez Tiles 2)

1º étape

Définir un TilesConfigurer

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <!--Set up your Tiles definition RIGHT HERE-->  
      <value>/WEB-INF/defs/general.xml</value> 
     </list> 
    </property> 
</bean> 

2º étape

Configurer votre résolveur d'affichage (Vous pouvez utiliser UrlBasedViewResolver ou Res ourceBundleViewResolver). Mais gardez à l'esprit si vous utilisez UrlBasedViewResolver, Spring ne vous permet pas d'utiliser autre sous-classe UrlBasedViewResolver, tels que InternalResourceView, VelocityView et FreeMarkerView.

Soit

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <!--Tiles IS NOT JSP--> 
    <!--So you can not use JSP stuffs like .jsp suffix--> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
</bean> 

Ou

<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> 
    <!--views.properties is located in The root of the classpath--> 
    <property name="basename" value="views"/> 
</bean> 

va ici un morceau de code de view.properties

#You MUST SET UP each Target view class 
welcome.(class)=org.springframework.web.servlet.view.tiles2.TilesView 
#url MUST MATCH Tiles definition 
welcome.url=welcome 
+0

TNX, donc je ne peux pas utiliser le suffixe et préfixe. Et j'ai supprimé la partie préfixe suffixe et cela a fonctionné comme un charme. Je ne sais pas pourquoi je n'ai pas essayé ce b4. J'ai utilisé ResourceBundleViewResolver pour mes pages jsp (je vais avoir très peu de page jsp) et UrlBasedViewResolver pour mes carreaux. Tu as sauvé ma journée. Merci beaucoup Arthur! – beku8