究竟什么是@RequestParam以及它是如何填充的?
Spring文档说:
使用@RequestParam批注将请求参数绑定到控制器中的方法参数。
来源: http : //static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestparam
AFAIK,如果请求方法是GET,则请求参数是从查询字符串中检索的变量。 它们也是请求方法POST时从表单值检索的变量。 我已经使用一个简单的JSPvalidation了这一点,该JSP通过方法request.getParameter(“key”)显示请求参数。
但在我看来,@ RequestParam仅适用于GET方法请求。 它只能从查询字符串中获取值。
这是文档中的错误吗? 有人可以引用一些文档来描述@RequestParam用于什么,它不能用于什么,以及它是如何填充的?
我可以使用@RequestParam for POST方法来获取表单值吗? 如果我不能使用@RequestParam,我还能使用什么? 我试图避免调用request.getParameter(“key”)。
它也适用于post。 你可以发布你的方法体和你的HTML吗?
是的,它也适用于post方法。 你可以提到@RequestParam
的method属性作为RequestMethod=POST
。 这是代码片段
@RequestMapping(value="/register",method = RequestMethod.POST) public void doRegister ( @RequestParam("fname") String firstName, @RequestParam("lname")String lastName, @RequestParam("email")String email, @RequestParam("password")String password )
您可以使用@ModelAttribute
注释并绑定到整个对象,而不是绑定到单个表单值的@RequestParam
。 但它应该与form
一起使用或bind
Spring的JSTL。
示例: – 调用JSP-page的控制器,它应该将对象添加到Model:
@RequestMapping(value="/uploadForm", method=RequestMethod.GET)
public String showUploadForm(Model model){
Artist artist = new Artist(); Track track = new Track(); model.addAttribute("artist", artist); model.addAttribute("track", track); return "uploadForm";
}
- JSP可能看起来像这样:
曲目标题*:
-
处理表单提交的控制器;
@RequestMapping(value =“/ uploadToServer”,method = RequestMethod.POST)
public String uploadToServer(@ModelAttribute(“artist”)艺术家艺术家,@ ModelAttribute(“track”)Track track){….}
在这里,我找到了使用@ModelAttribute注释的一个很好的解释 – krams915.blogspot.ca