2010-08-17 29 views
3

J'ai l'exception suivante tout en essayant d'ouvrir l'URL http://localhost:8080/app/clientes/agregar:UrlBasedViewResolver et Apache Tiles2 au printemps 3

javax.servlet.ServletException: Could not resolve view with name 'clientes/agregar' in servlet with name 'Spring MVC Dispatcher Servlet' 

Mon-mvc config.xml est le suivant:

<mvc:annotation-driven /> 

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
</bean> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions" value="/WEB-INF/tiles/tiles.xml" /> 
</bean> 

Mon tiles.xml simples:

<definition name="mainTemplate" template="/WEB-INF/template/template.jsp"> 
     <put-attribute name="titulo" value="Simple Tiles 2 Example" type="string" /> 
     <put-attribute name="header" value="/WEB-INF/template/header.jsp" /> 
     <put-attribute name="footer" value="/WEB-INF/template/footer.jsp" /> 
</definition> 

<definition name="*" extends="mainTemplate"> 
    <put-attribute name="content" value="/WEB-INF/views/{1}.jsp" /> 
</definition> 

Lorsque j'essaie d'ouvrir des emplacements sous/app cela fonctionne très bien, comme/app/welcom e ou/app/clients, mais cette erreur apparaît lorsque vous essayez d'ouvrir/app/clientes/quelque chose. Je suppose qu'il a quelque chose à voir avec l'URL Resolver, mais je ne peux pas trouver ce que ...

Ma classe ClientesController, annotée avec @Controller a une méthode comme ce qui suit:

@RequestMapping(method = RequestMethod.GET, value = "agregar") 
public void agregar() { ... } 

Mon JSP afficher les fichiers sont situés sous/WEB-INF/vues comme:

/WEB-INF/views 
-- /clientes 
---- agregar.jsp 
-- welcome.jsp 
-- clientes.jsp 

Merci!

Répondre

1

ajouté ce qui suit dans mon tiles.xml et fonctionne très bien:

<definition name="*/*" extends="mainTemplate"> 
    <put-attribute name="content" value="/WEB-INF/views/{1}/{2}.jsp" /> 
</definition> 

une meilleure solution (plus souple)?

1
<definition name="/**" extends="page"> 
    <put-attribute name="content" value="/WEB-INF/jsp/{1}.jsp"/> 
</definition> 

Si vous obtenez Stackoverflow vous devriez faire comme ça (type = "template"):

<put-attribute name="some_name" value="some_page.jsp" type="template"/> 
1

Je ne l'ai pas testé, mais comme la documentation dit ici: tiles wildcards

  • un astérisque (*) pour un seul espace réservé;
  • deux astérisques (**) pour dire "dans chaque répertoire sous celui spécifié";

Donc, essayez avec deux astérisques

<definition name="**" extends="mainTemplate"> 
    <put-attribute name="content" value="/WEB-INF/views/{1}.jsp" /> 
</definition>