0

以下は、Spring MVC コントローラーへの JQuery Ajax 呼び出しを使用して、Json シリアル化オブジェクト (他の pojo のリストを持つ Java pojo) を投稿しようとする私のコードです。

サーバーから不正なリクエスト エラーを取得しています。

modalForm データが Json オブジェクトから削除されると、MainPojo データはサーバー側で正しく受信されます。

HTMLコード

   Fisrt form
   ------------- 
    <form id="mainForm">
           .....
    </form>

    Form in the modal
    -----------------
    <form  id="modelform" ..>
         <div id="row"> 
    <input type="text" id="subject" />
    <input type="text" id="max" />
    <input type="text" id="min" />
      </div>
     <div id="row"> 
    <input type="text" id="subject" />
    <input type="text" id="max" />
    <input type="text" id="min" />
     </div>
         ............. 
    </form>}

Jクエリ

          var mainObject = $('#mainForm').serializeObject();

          var modelObject = $('#modelform').serializeObject();

          mainObject.marks = modelObject;

Json (期待される)

          {
            "name": "Some Name",
             "age": "10",
             "marks": [
               {
                 "subject": "maths",
                 "max": "20",
             "min":"12"
                },
               {
                 "subject": "english",
                 "max": "20",
             "min":"12",
                }
              ]
          }

Json (上記コードの実際の出力)

           {
             "name": "Some Name",
              "age": "10",
              "marks": [
                        {
                         "subject": "maths",
                         "subject": "english"
                         },
                         {
                          "max": "20",
                       "max":"20",
                          },
                      {
                       "min": "12",
                       "min":"12"
                       }
                          ]
               }

                 //Ajax call
                 $.ajax({
                       url: '/save',
                   type: 'POST',
                   contentType: 'application/json',
                   mimeType: 'application/json',
                   data : JSON.stringify(mainObject),
                   dataType: 'json',
                   success: function(data) {
                      alert(data.msg);
                   },
                   error:function (xhr, ajaxOptions, thrownError) {
                      alert('Technical error occured');
                   }
           });

Java ポジョ

          public class MainPojo {

            private String name;
            private String age;            
                private Lists<marks>
                ..................
          }

          public class ModelPojo {

            private String subject;
            private String maxMarks;
            private String minMarks;

                .....................
            }

コントローラーの方法

@RequestMapping(value = "save", headers = "Accept=application/json",
                method = RequestMethod.POST)
public @ResponseBody String save(@RequestBody final  MainPojo  mainPojo) {

} 

問題を特定するのを手伝ってください。

ありがとうございました。

4

2 に答える 2

2

このようにhtmlテキストを変更します

     <form id="mainForm">
    <input name="name" type="text" value="Some Name">
    <input name="age" type="text" value="20">
     </form>
     <form  class="modelform">

    <input type="text" value="subject" name="subject"/>
    <input type="text" value="max" name="max"/>
    <input type="text" value="min" name="min"/>
      </form>
     <form  class="modelform">
    <input type="text" value="subject" name="subject" />
    <input type="text" value="max" name="max"/>
    <input type="text" value="min"  name="min"/>
   </form>

次に、JavaScriptコードを記述してオブジェクト値を割り当てます

<script>
    var mainObject = $('#mainForm').serializeObject();
    var modelObject = [];
     $('.modelform').each(function(o){
        modelObject.push($(this).serializeObject());
    })
    mainObject.marks = modelObject;
</script>
于 2013-11-07T09:27:56.677 に答える