有没有办法获取帖子数据本身?我知道spring处理将发布数据绑定到java对象。但是,给定两个要处理的字段,如何获得该数据?
例如,假设我的表单有两个字段:
<input type="text" name="value1" id="value1"/>
<input type="text" name="value2" id="value2"/>
我将如何在控制器中检索这些值?
Answers:
如果使用的是内置控制器实例之一,则控制器方法的参数之一将是Request对象。您可以调用request.getParameter("value1")
以获取POST(或PUT)数据值。
如果您使用的是Spring MVC注释,则可以在方法的参数中添加一个带注释的参数:
@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
//do stuff with valueOne variable here
}
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) {
// ...
}
value1
和value2
,这将为两个值创建一个String?然后您将需要解析出各个值?为什么当您可以像接受的答案中那样分别指定/获取每个值时为什么这样做?
RequestMethod.POST
。我什至添加了,@CrossOrigin(origins = "*")
但我仍然得到相同的结果...不知道发生了什么...我使用了与您的答案相同的签名(除了在我的情况下someMethod
返回a String
)...
Spring MVC在Servlet API之上运行。因此,您可以HttpServletRequest#getParameter()
为此使用:
String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");
在HttpServletRequest
Spring MVC的内部应该已经提供给您的方法参数的一个handleRequest()
方法。
RequestMethod.POST
。我什至添加了,@CrossOrigin(origins = "*")
但我仍然得到相同的结果...不知道发生了什么...我使用了与您的答案相同的签名(除了在我的情况下someMethod
返回a String
)...