2010-12-06 7 views
0

問題を解決しようとしています。だから、spring 3.0 + tiles 2.1リダイレクトの問題

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

、すべて.doというで終了します。

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

その後、私は持っている(アプリが起動します)index.jspが...では、web.xmlに私は、サーブレットディスパッチャを定義していますコントローラによって行われるべきである。それは動作します。定義されたコントローラは次のとおりです。

@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"; 
    } 
} 

私がメッセージを見ることができますが、それを取得する場合、それは失敗に - 復帰「こんにちは」 - 、私はまだ同じ例外があること:

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) 

を私

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

と私のファイル構造は次のとおりです:タイル定義がある

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 

タイルの定義に問題があるかもしれませんが、それでも見つからない

答えて

1

タイル用のリゾルバをdispatcher-servlet.xmlに設定する必要があります。コントローラで文字列を返すときは、

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

詳細情報here

+0

感謝:appropiate 1を探してしようと、すべてのリゾルバを超えます。私はすでに私が持っている問題を解決したが、とにかく感謝する – Yago