spring mvc RequestMapping并重定向到view

时间:2012-12-20 19:46:08

标签: spring-mvc controller

我在MyController中有代码

 @RequestMapping("/hello.jsp")
    public void handleRequest() {
        System.out.println("hello.jsp");
        logger.info("Returning hello view");
    }

    @RequestMapping("/hello2")
    public ModelAndView hello2() {
        System.out.println("123");
        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello2", "message", message);
    }

在dispatcher-servlet.xml中我有:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">       
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

最后我有:

~8080/hello2.htm - OK
~8080/hello.htm  - NOT OK, aloso I tried: hello.jsp, hello; moved hello.jsp to /WEB-INF/jsp/ and to/WEB-INF/ - no effect 


1.hello2() is working well, and redirecting to the hello2.jsp
2.hello() is NOT working, and NOT redirecting

在将“viewResolver”放入dispatcher-servlet.xml之前我有相反的行为 - hello()正在运行hello2()不是。 [但后来我把所有的jps都放在了WEB-INF文件夹中]

是什么原因?

我的web.xml包含:

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

2 个答案:

答案 0 :(得分:0)

我认为这是因为您要返回void而不是视图名称。

@RequestMapping("/hello")
public String handleRequest() {
    System.out.println("hello.jsp");
    logger.info("Returning hello view");
    return("hello");
}

答案 1 :(得分:0)

这是因为'/hello.jsp' - 它试图找到'/hello.jsp.jsp',因为我用'suffix“value =”。jsp“。

之前:没有'viewResolver',我猜它是由一些默认逻辑表现的。