2011-12-28 67 views
4

春文件说:@RequestParam究竟是什么,它是如何得到填充的?

使用@RequestParam注解请求参数绑定到你的控制器 方法参数。

源: 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”)。

回答

6

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

+0

我怎么解释这个愚蠢,我们实际上使用的自定义标签。我以为我正在使用“名称”属性。是的,它的作品。 -_- – supertonsky 2011-12-28 06:46:32

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 
) 
0

代替@RequestParam其结合到单个表单值,则可以使用@ModelAttribute注释并结合到整个对象。但它应该与formbind Spring的JSTL结合使用。

例子: - 控制器调用JSP页面,它应该对象添加到模型:

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

公共字符串showUploadForm(型号模型){

Artist artist = new Artist(); 
Track track = new Track(); 

model.addAttribute("artist", artist); 
model.addAttribute("track", track); 


return "uploadForm"; 

}

  • JSP可能看起来像这样:

歌曲名称*:

  • 控制器,其处理表单提交;

    @RequestMapping(值= “/ uploadToServer”,方法= RequestMethod.POST)

    公共字符串uploadToServer(@ModelAttribute( “艺术家”)艺术家的艺术家,@ModelAttribute( “轨道”)轨道轨道){。 ...}

在这里,我发现使用@ModelAttribute注解的一个很好的解释 - krams915.blogspot.ca