有没有办法获取帖子数据本身?我知道spring处理将数据绑定到java对象。但是,考虑到我想要处理的两个字段,我如何获得该数据?
例如,假设我的表单有两个字段:
<input type="text" name="value1" id="value1"/>
<input type="text" name="value2" id="value2"/>
如何在控制器中检索这些值?
答案 0 :(得分:116)
如果您使用其中一个内置控制器实例,则控制器方法的其中一个参数将是Request对象。您可以调用request.getParameter("value1")
来获取POST(或PUT)数据值。
如果您使用的是Spring MVC注释,则可以在方法的参数中添加带注释的参数:
@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
//do stuff with valueOne variable here
}
答案 1 :(得分:30)
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) {
// ...
}
答案 2 :(得分:26)
Spring MVC运行在Servlet API之上。因此,您可以使用HttpServletRequest#getParameter()
:
String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");
作为HttpServletRequest
方法的方法参数之一,{MV}已经可以在Spring MVC中使用{。}}。
答案 3 :(得分:0)
您可以简单地传递您想要的属性,而无需在控制器中添加任何注释:
@RequestMapping(value = "/someUrl")
public String someMethod(String valueOne) {
//do stuff with valueOne variable here
}
适用于 GET 和 POST