2012-02-26 117 views
2

控制器中的彈簧重定向不起作用,如返回「重定向:/ 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"; 
} 
+0

定義「不工作」。你期望它做什麼,它做什麼呢? – 2012-02-26 08:12:29

+0

它給404或找不到錯誤消息。我希望呈現reservationSuccess視圖。但/ reservation/reservationSuccess正在呈現reservationSuccess.jsp頁面。 – Curious 2012-02-26 11:27:39

回答

5

當你在做一個重定向到reservation/reservationSuccess,顧名思義,瀏覽器會發送一個新的請求到您的Web應用程序的URL reservation/reservationSuccess。您將在瀏覽器的地址欄中看到完整的網址。

如果這個URL沒有映射到您的web應用中的任何servlet,那麼您顯然會遇到404錯誤。

您需要明白,重定向的目的不是分派給視圖(JSP)。重點是讓瀏覽器轉到您的Web應用程序中的另一個URL。因此,在前綴redirect:之後放置的路徑應該是您的Spring MVC應用程序的動作路徑。不是視圖的路徑。

1

你必須在你的控制器中有另一種方法來攔截reservation/reservationSuccess GET請求。

例如:

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

「重定向:XXX」正在尋找一個RequestMapping匹配重定向串XXX,然而,返回「XXX」是要去尋找視圖解析器映射該字符串一個JSP頁面。這是主要的區別。