весна 3.0 + плитка 2.1 проблема в перенаправлении - PullRequest
0 голосов
/ 06 декабря 2010

У меня проблема с попыткой поднять его. В index.jsp (где запускается приложение) у меня есть ...

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

Затем в файле web.xml я определил диспетчер сервлета:

<!-- 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, должно быть принято контроллером. Это работает . Определен контроллер:

@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 Ответ

1 голос
/ 06 декабря 2010

Вы должны сконфигурировать в вашем dispatcher-servlet.xml распознаватель для плиток, поэтому, когда вы возвращаете строку в контроллере, Spring перебирает все ваши распознаватели, пытаясь найти подходящую:

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

Подробнее здесь

...