@RequestBody ajax 415 400

使用springmvc和Ajax进行数据交互时使用标签@RequestBody时我报了这两个错,刚开始对springmvc的使用和注解有点迷,而后踩坑上了。ajax

  先说下怎么才会踩上去。首先@RequestBody在一个Controller的一个方法中只能用一次,因此若是你使用了两次意图在一个方法中封装两个实体,那你铁定时解决不了的.spring

  缘由:1.request.getInputStream()在一次请求只执行一次。@RequestBody是将前台传递的对象一次性尝试封装到你使用的实体中,也就是你设置在@RequstBody后面的那个参数。若是你实在是有必要在这个方法中使用多个实体的属性的话,我建议新建一个实体Bean。将你须要的实体属性封装,而后确保你发送的Ajax数据正确的被转成json格式的字符串而不是对象而后发给controller。json

       2.传递的json的 key值和你指望封装的实体名要一致,你能够少给 但必定不要多给,不要乱给。好比方法中你指望 @requestBody User  user包含 String username ,String password,Long user_id;你能够在Ajax中只发送 username 或password 或user_id浏览器

或者任意两种,三种的组合。你不能给usernnnnnname,或者其余乱七八糟的东西,总之就是少给能够 ,多给不行,乱给也不行。mvc

     3.若是你不肯定你的Ajax是否使用正确的话,就将必要的参数设置彻底如设置浏览器的content-Type  :contentType:'application/json;charset=utf-8'   另外确保没有中文格式的字符。参照app

 1 function submitComment(){  2         var comment_details=$('#comment_details').val();  3         var forum_id=$('#forum_id').val();  4         var dataa={  5                 "comment_details":comment_details,  6                 "forum_id":forum_id,  7  };  8         var d=JSON.stringify(dataa);  9  $.ajax({ 10             type:'post', 11             url:'../comment/releaseComment', 12             contentType:'application/json;charset=utf-8', 13  data:d, 14             dataType:'json', 15  success:function(data){ 16                 $('#comment_details').val(''); 17  window.location.reload(); 18  } 19  }) 20     }

JSON.stringify是个不错的工具,可是网上貌似有老哥被坑过由于通过这个函数转换后json对象会变成json字符串函数

。以上就是我纠结了挺久的@RequestBody 报错400 和415的解决办法。工具

相关文章
相关标签/搜索