@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的解決辦法。工具

相關文章
相關標籤/搜索