春天重定向不起作用

时间:2012-02-26 03:59:50

标签: spring-mvc

Spring重定向控制器不能正常工作,如返回“redirect:/ reservation / reservationSuccess”,但返回“/ reservation / reservationSuccess”;工作中。为什么它不起作用。哪里出错了。请帮忙。

@RequestMapping(method = RequestMethod.POST)
public String submitForm(@ModelAttribute("reservation") Reservation reservation,
                         BindingResult result, 
                         SessionStatus status, 
                         Model model) {
    validator.validate(reservation, result);
    if(result.hasErrors()) {
        model.addAttribute("reservation",reservation);
        return "reservation/reservationForm";
    }
    reservationService.make(reservation);
    status.setComplete();
    return "redirect:reservation/reservationSuccess";
}

3 个答案:

答案 0 :(得分:5)

当您重定向到reservation/reservationSuccess时,根据定义,浏览器会向您的网络应用的网址reservation/reservationSuccess发送新请求。您将在浏览器的地址栏中看到完整的URL。

如果此网址未映射到您的网络应用中的任何servlet,您显然会收到404错误。

您需要了解重定向的重点不是分派到视图(JSP)。重点是让浏览器转到您的Web应用程序中的另一个URL。因此,您在redirect:前缀之后放置的路径应该是Spring MVC应用程序的操作路径。不是观点的路径。

答案 1 :(得分:1)

您必须在Controller中使用另一种方法来拦截reservation/reservationSuccess GET请求。

例如:

@RequestMapping(value="reservation/reservationSuccess", method = RequestMethod.GET)
public String getSuccess() {
    return "reservation/reservationForm";
}

答案 2 :(得分:0)

“redirect:xxx”正在寻找RequestMapping以匹配重定向字符串xxx,但是,返回“xxx”将查找View Resolver以将该字符串映射到JSP页面。这是主要的区别。