Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringjQueryAjax帖子上的400个错误请求_Jquery_Spring Mvc_Http Post - Fatal编程技术网

SpringjQueryAjax帖子上的400个错误请求

SpringjQueryAjax帖子上的400个错误请求,jquery,spring-mvc,http-post,Jquery,Spring Mvc,Http Post,我收到了一个400个错误的请求。你知道这是什么问题吗?日志是 控制器 @Controller public class AjaxController { @RequestMapping(value="/addKeys", method=RequestMethod.POST, consumes="application/json; charset=UTF-8") public ResponseEntity<String> addKeys(@RequestParam(va

我收到了一个400个错误的请求。你知道这是什么问题吗?日志是

控制器

@Controller
public class AjaxController {
    @RequestMapping(value="/addKeys", method=RequestMethod.POST, consumes="application/json; charset=UTF-8")
    public ResponseEntity<String> addKeys(@RequestParam(value="keys") ArrayList<Keys> keys){
        System.out.println("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"+keys);
    }
}
FireBug-URL

http://localhost:8080/Di/ajx/addKeys
Firebug-响应头

Cache-Control   must-revalidate,no-cache,no-store
Content-Length  1384
Content-Type    text/html; charset=iso-8859-1
Server  Jetty(6.1.26)
Firebug-请求头

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Content-Length  74
Content-Type    application/json; charset=UTF-8
Cookie  JSESSIONID=7mymobst47ig1s7uqy2z1fvx4
Host    localhost:8080
Referer http://localhost:8080/Di/tiles/entNews.htm
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
X-Requested-With    XMLHttpRequest
萤火虫源

{"keys":[{"key":"canon","label":"Canon"},{"key":"ricoh","label":"Ricoh"}]}
萤火虫-反应

"NetworkError: 400 Bad Request - http://localhost:8080/Di/ajx/addKeys"

您发布的是JSON,不是表单数据,而是试图将
ArrayList
作为表单参数读取

尝试从以下位置更改您的方法签名:

public ResponseEntity<String> addKeys(@RequestParam(value="keys") ArrayList<Keys> keys){

因此,您只是发布列表,而不是将其包装到另一个包含keys元素的对象中。

很高兴您能够让它正常工作。我在这里给出了两个选项,如果您指定哪一个解决了您的问题,这将有助于未来的访问者。我必须同时做这两件事。但一旦我这样做了,我就不会在addKeys方法中得到@RequestBody ArrayList键。我得到这个ArrayList密钥!!我得到了一个ClassCase例外!!虽然很奇怪!!有没有办法让它自动转换成一个Keys类的列表?将@RequestBody ArrayList Keys改为@RequestBody Keys[]Keys,而不是作为参数。现在一切正常@digitaljoel解决了我的问题400错误请求…现在我的控制器收到请求(200 ok)…koodos获得了答案…感谢你们两位的回答和更新。这是我第一次意识到“@RequestParam”和“@RequestBody”之间的区别。一般注意:要轻松解决根本问题,首先在
org.springframework.http.converter.httpMessageNodeAbleException.httpMessageEndAbleException()中添加断点。
"NetworkError: 400 Bad Request - http://localhost:8080/Di/ajx/addKeys"
public ResponseEntity<String> addKeys(@RequestParam(value="keys") ArrayList<Keys> keys){
public ResponseEntity<String> addKeys(@RequestBody Keys[] keys){
data: JSON.stringify(tmpList)