2015-11-13 65 views
0

這是我想要的效果,但我不明白時的語法:從Spring Web MVC控制器返回帶查詢參數的查看字符串?

@RequestMapping(method = RequestMethod.GET, params = { "param1", "param2" }, produces = "text/html") 
public String createForm(Model uiModel, @RequestParam("param1") String param1, @RequestParam("param2") String param2, HttpServletRequest request, HttpServletResponse response) throws IOException { 
    populateEditForm(uiModel, new Object()); 
    return "fubar/update?param1=" + param1+ "&param2=" + param2; 

}

的錯誤是

javax.servlet.ServletException: Could not resolve view with name 'fubar/update?param1=... 

有沒有辦法附加查詢參數返回字符串?

謝謝!

+0

我在想這個錯誤,我真正需要做的是改變表單提交的路徑。添加'uiModel.addAttribute(「path」,「fubar/update?param1 =」+ param1 +「&param2 =」+ param2);'解決了這個問題。 –

回答

1

看着你在你的問題下面添加的評論,它看起來像你試圖向前看(如:JSP)。所以,是的,沒有重定向。你可以在HTML FORM上設置這些參數(就像你做的那樣)。但是您也可以通過將這些值添加到模型來設置這些值。因此,在這種情況下,您肯定應該使用第一個ModelAndView構造函數參數來指定要轉發的視圖(不包含「重定向」部分),並使用第二個參數傳遞模型參數。

將舊的Struts應用程序轉換爲Spring應用程序時會發生這種情況。在struts中,它「看起來像」可以用有趣的方式添加請求/ URL參數。實際上,一旦您收到inboud HTTP請求,向URL參數添加內容是沒有意義的。您只需要將新值添加到「請求處理」邏輯(將參數添加到MODEL)。如果您確實需要爲網址添加參數,那只有在您要創建新請求時(通常是重定向到另一個網頁)。而在這種情況下,對方的回答是正確的道路上,但你要的網址參數添加到「重定向:」字符串(在ModelAndView的構造函數的第一個參數):

return new ModelAndView("redirect:fubar/update?param1=" + param1+ "&param2=" + param2); 

。當然,這是如果你想做一個重定向(HTTP 302)到另一個頁面。