@RequestBodyオブジェクトが空で、異常Required request body is missingの解決方法

2804 ワード

フロントエンドとのインタラクションの過程では、jsonデータとフロントエンドでインタラクションを行うため、転送されたjsonデータ全体を取り出すには@RequestBodyという注釈が必要であり、フロントエンドがデータを送信するフォーマットは以下の通りである.
//    json  
$("#id").click(function () {
    $.ajax({
        type: "post",
        url: "test",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(getTestJson()),
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
        }
    });

    function getTestJson() {
        var Json = {
            "a":"aaaaaaa",
            "b":0,
            "c":2,
        };
        return Json;
    }

});
 
  
       AJAX    ,      ,               ,          :
@RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"           JSON  ");
            }
}
このように、@RequestBody注釈を加えると、要求されたjsonデータを簡単に全部手に入れることができ、jsonデータを勝手に変換することができます.
JSONObject     JAVA       。
      ,     json     ,  json    ,         ,  Required request body is missing
                  json     ,      ,           。
      ,                        ,    ,              ,   
             ,      @RequestBody    Required   ,         false,  :
 @RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody(required = false) String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"           JSON  ");
            }
}