2010-12-06 39 views
0

J'ai un problème en essayant de le relever. Dans index.jsp (où l'application commence) Je ...spring 3.0 + tiles 2.1 problème dans la redirection

<jsp:forward page="hello.do"></jsp:forward> 

Puis, dans web.xml j'ai défini le régulateur de servlet:

<!-- Servlet para levantar el dispatcher servlet de spring MVC --> 
<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

Ainsi, tout ce qui se termine par .Ne , devrait être prise par le contrôleur. Ça marche . Le contrôleur est défini:

@Controller 
@RequestMapping("/hello") 
public class HelloWorldController { 
    @RequestMapping(method=RequestMethod.GET) 
    public String procesar(HttpServletRequest request,ModelMap modelo){ 
     System.out.println("todo jodidamente correcto"); 
     String mensaje = "Hola, perras"; 

     modelo.addAttribute("message",mensaje); 

     return "hello"; 
    } 
} 

Je peux voir le message, mais il échoue quand il arrive à - retour « bonjour » -, que j'ai encore la même exception:

javax.servlet.ServletException: Could not resolve view with name 'hello' in servlet with name 'dispatcher' 
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1013) 
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:815) 
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:717) 
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:644) 
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:549) 
javax.servlet.http.HttpServlet.service(HttpServlet .java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet .java:717) 

ma définition de tuile est:

<tiles-definitions> 
    <definition name="topfisio.layout" template="/layouts/three-layer.jsp"> 
     <put-attribute name="title" value="Top fisio" /> 
     <put-attribute name="header" value="/jsp/header.jsp" /> 
     <put-attribute name="footer" value="/jsp/footer.jsp" /> 
    </definition> 


    <definition name="*" extends="topfisio.layout"> 
     <put-attribute name="title" value="{1}" /> 
     <put-attribute name="content" value="/jsp/{1}.jsp"/> 
    </definition> 
</tiles-definitions> 

et ma structure de fichier est:

index.jsp 

WEB-INF 
WEB-INF -- dispatcher-servlet.xml 
WEB-INF -- tiles-def.xml 
WEB-INF -- web.xml 
layouts 
layouts -- three-layer.jsp 
jsp 
jsp -- footer.jsp 
jsp -- header.jsp 
jsp -- hello.jsp 

je peut avoir un problème avec les définitions de tuiles, mais je ne peux toujours pas trouver

Répondre

1

Vous devez configurer votre répartiteur-servlet.xml le résolveur pour les carreaux, donc quand vous retournez une chaîne dans le contrôleur Spring ira sur tous vos résolveurs essayant recherche publique approprié un:

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

<bean id="tilesResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
    <!-- In case you have more than one resolver you can set the order here --> 
    <!-- The order 0 will be the first one in the order --> 
    <property name="order" value="1"/>    

Plus d'info here

+0

merci. J'ai déjà résolu le problème que j'ai, mais merci quand même – Yago