如何在Spring MVC中显式获取post数据?

76 java spring-mvc

有没有办法获取帖子数据本身?我知道spring处理将数据绑定到java对象.但是,考虑到我想要处理的两个字段,我如何获得该数据?

例如,假设我的表单有两个字段:

 <input type="text" name="value1" id="value1"/>
 <input type="text" name="value2" id="value2"/>
Run Code Online (Sandbox Code Playgroud)

我如何在控制器中检索这些值?

Jac*_*son 126

如果您使用其中一个内置控制器实例,则控制器方法的其中一个参数将是Request对象.您可以调用request.getParameter("value1")以获取POST(或PUT)数据值.

如果您使用的是Spring MVC注释,则可以在方法的参数中添加带注释的参数:

@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
 //do stuff with valueOne variable here
}
Run Code Online (Sandbox Code Playgroud)


sim*_*mon 33

OP确切问题的另一个答案是将consumes内容类型设置为"text/plain"然后声明@RequestBody String输入参数.这将把POST数据的文本作为声明的String变量传递(postPayload在下面的示例中).

当然,这假设您的POST有效负载是文本数据(如OP所述).

例:

    @RequestMapping(value = "/your/url/here", method = RequestMethod.POST, consumes = "text/plain")
    public ModelAndView someMethod(@RequestBody String postPayload) {    
        // ...    
    }
Run Code Online (Sandbox Code Playgroud)

  • 这是我正在寻找的答案.通过"发布数据本身"我理解相同.谢谢! (2认同)

Bal*_*usC 25

Spring MVC运行在Servlet API之上.所以,你可以使用HttpServletRequest#getParameter()这个:

String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");
Run Code Online (Sandbox Code Playgroud)

HttpServletRequest应该已经Spring MVC的内部提供给您的方法参数的一个handleRequest()方法.

  • 是的,使用@ModelAttribute注释和表单支持bean.这个链接很好地描述了如何做到这一点:http://viralpatel.net/blogs/2010/07/spring-3-mvc-handling-forms.html (2认同)