關於SpringMVC頁面向Controller傳參的問題,看了網上不少帖子,大多總結為以下幾類: 1、直接把頁面表單中相關元素的name屬性對應的值作為Controller方法中的形參。 這個應該是最直接的,我看的那本書從百度的編輯器中取內容content時就直接用的這個方法: 2、通過@Requ ...
關於SpringMVC頁面向Controller傳參的問題,看了網上不少帖子,大多總結為以下幾類:
1、直接把頁面表單中相關元素的name屬性對應的值作為Controller方法中的形參。
這個應該是最直接的,我看的那本書從百度的編輯器中取內容content時就直接用的這個方法:
<!--頁面-->
<form action="<%=basePath%>saveUeditorContent" method="post"> <!-- 載入編輯器的容器 --> <div style="padding: 0px;margin: 0px;width: 100%;height: 100%;" > <script id="container" name="content" type="text/plain"> </script> <!--why dose this use script tag here???--> </div> <input name="test_input" value="hengha"> <button type="submit"> 保存</button> </form>
//Controller @RequestMapping(value="/saveUeditorContent") public ModelAndView saveUeditor(String content, String test_input){ ModelAndView mav = new ModelAndView("myJSP/test03"); //addObject方法設置了要傳遞給視圖的對象 mav.addObject("content", content); mav.addObject("input_content", test_input); //返回ModelAndView對象會跳轉至對應的視圖文件。也將設置的參數同時傳遞至視圖 return mav; }
2、通過@RequestParam把頁面表單中相關元素的name屬性對應的值綁定Controller方法中的形參。
用於URL帶?場景,/saveUeditorContent?content=123&input_content=456,參數可以設置是否必須required,預設值defaultvalue
@RequestMapping(value="/saveUeditorContent") public ModelAndView saveUeditor(@RequestParam(value="content",required=true,defaultValue="123") String content, @RequestParam("test_input") String input_content){ ModelAndView mav = new ModelAndView("myJSP/test03"); mav.addObject("content", content); mav.addObject("input_content", input_content); return mav; }
3、通過@PathVariable獲取@RequestMapping中URL路徑帶入的{變數}綁定Controller方法中的形參。
用於URL直接傳參場景,/saveUeditorContent/123/456
@RequestMapping(value="/saveUeditorContent/{content}/{test_input}") public ModelAndView saveUeditor(@PathVariable("content") String content, @PathVariable("test_input") String input_content){ ModelAndView mav = new ModelAndView("myJSP/test03"); mav.addObject("content", content); mav.addObject("input_content", input_content); return mav; }
4、創建屬性名對應頁面表單中相關元素帶setter和getter方法的POJO對象作為Controller方法中的形參。
//太晚了不是特別熟不整了
5、把HttpServletRequest對象作為Controller方法中的形參。
@RequestMapping(value="/saveUeditorContent") public ModelAndView saveUeditor(HttpServletRequest request){ ModelAndView mav = new ModelAndView("myJSP/test03"); mav.addObject("content", request.getParameter("content")); mav.addObject("input_content", request.getParameter("test_input")); return mav; }
約束說明:
a) 1中的形參,2中的RequestParam("參數"),3中的URL中的{參數}以及PathVariable("參數"),4中的POJO對象屬性,5中的request.getParameter("參數")均需要和前臺頁面中相關元素name屬性對應的值匹配。
b) 2中的RequestParam("參數"),3中的PathVariable("參數")綁定到後面跟的形參,後臺在處理時根據實際需要可以改變參數名稱。