究竟什么是@RequestParam以及它是如何填充的?

时间:2011-12-28 05:06:24

标签: java spring model-view-controller spring-mvc

Spring文档说:

  

使用@RequestParam注释将请求参数绑定到a   控制器中的方法参数。

源: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestparam

AFAIK,如果请求方法是GET,则请求参数是从查询字符串中检索的变量。它们也是请求方法为POST时从表单值检索的变量。我已经使用一个简单的JSP验证了这一点,该JSP通过方法request.getParameter(“key”)显示请求参数。

但在我看来,@ RequestParam仅适用于GET方法请求。它只能从查询字符串中获取值。

这是文档中的错误吗?有人可以引用一些文档来描述@RequestParam用于什么,它不能用于什么,以及它是如何填充的?

我可以将@RequestParam用于POST方法来获取表单值吗?如果我不能使用@RequestParam,我还能用什么?我试图避免调用request.getParameter(“key”)。

3 个答案:

答案 0 :(得分:6)

它也适用于帖子。你可以发布你的方法体和你的HTML吗?

答案 1 :(得分:0)

是的,它也适用于post方法。您可以将@RequestParam的方法属性称为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 
)

答案 2 :(得分:0)

您可以使用dispatch_sync(dispatch_get_main_queue(), { self.capturePhoto.image = pickedImage }) 注释并绑定到整个对象,而不是绑定到单个表单值的@RequestParam。但它应该与@ModelAttributeform Spring的JSTL一起使用。

实施例: - 调用JSP-page的控制器,它应该将对象添加到Model:

bind

public String showUploadForm(Model model){

@RequestMapping(value="/uploadForm", method=RequestMethod.GET)

}

  • JSP可能看起来像这样:

             曲目标题*:              

  • 处理表单提交的控制器;

    @RequestMapping(value =“/ uploadToServer”,method = RequestMethod.POST)

    public String uploadToServer(@ModelAttribute(“artist”)艺术家艺术家,@ ModelAttribute(“track”)曲目曲目){....}

我在这里找到了使用@ModelAttribute注释的一个很好的解释 - krams915.blogspot.ca