springmvc接收數組類型參數

 

第一種方式:

<script type="text/javascript">

    function get(){

       var privailegeIds = ["1-1","1-3","1-4"];

        $.ajax({

            url:" ",

            type: "POST",

            data:{"peopleId":2,"privailegeIds":privailegeIds},

            success:function(result){

              alert(JSON.stringify(result));

           }});

    }

 

</script>

 

@RequestMapping(value = { "" })

    @ResponseBody

    public DtoResult<Integer> updatePeoplePrivilege(Integer peopleId,@RequestParam(value = "privailegeIds[]") String[] privailegeIds) {

       DtoResult<Integer> result = null;

      

        returnresult;

    }

 

利用 @RequestParam(value = "privailegeIds[]") 來接收

第二種方式:

<script type="text/javascript">

    function get(){

       var privailegeIds = ["1-1","1-3","1-4"];

        $.ajax({

            url:" ",

            type: "POST",

            traditional :true,

            data:{"peopleId":2,"privailegeIds":privailegeIds},

            success:function(result){

              alert(JSON.stringify(result));

           }});

    }

 

</script>

 

traditional默認值是false,此處設置 traditional爲true,發送數組。

@RequestMapping(value = { "" })

    @ResponseBody

    public DtoResult<Integer> updatePeoplePrivilege(Integer peopleId, String[] privailegeIds) {

       DtoResult<Integer> result = null;

      

       returnresult;

    }

 

 

 

接收對象數組

參考文檔:https://blog.csdn.net/alan_alei/article/details/73361104

只接收復雜的對象數組:

這裏用到解析json的形式接收對象數組,爲什麼不直接像上面一樣直接接收對象數組,因爲spring接收的數組好像只能是基本類型,像這種對象類型的接受不成功,報以下錯誤:

Failed to convert value of type [java.lang.String[]] to required type [com.nv.common.model.AnswerInfo[]];

 

前端代碼:

<script type="text/javascript">

      function go() {

         var answerInfos = [ {

            "answerContent" : "是正確的",

            "answerTrue" : "Y",

            "answerComment" : "測試啊"

         },

 

         {

            "answerContent" : "是錯誤的",

            "answerTrue" : "N",

            "answerComment" : "測試啊"

         } ];

        

        

         $.ajax({

            url : "/droneSchool/exercises/insertExercisesInfo",

            type : "POST",

            contentType: 'application/json',

            data:JSON.stringify(answerInfos),

           

            success : function(result) {

            }

         });

      }

   </script>

 

 

這裏注意:data後面傳遞的數據是:data:JSON.stringify(answerInfos),不能是:data:{"answerInfos":JSON.stringify(answerInfos)},

 

Controller代碼:

@Controller

@RequestMapping(value = { "/exercises" })

public class ExercisesInfoController {

    @RequestMapping(value={"/insertExercisesInfo"})

    @ResponseBody

    public DtoResult<Integer> insertExercisesInfo(@RequestBody AnswerInfo[] answerInfos) {

 

   

       return null;

 

    }

 

}

接收對象數組和其他參數

第一種方式:將多個參數封裝到一個對象裏進行接收:

前端代碼:

<script type="text/javascript">

       function go() {

   

          

           var exercisesInfo = {

              sectionId : "1",

              exerciseContent : "是否正確?",

              exerciseComment : "測試"

           };

 

           var answerInfos = [ {

              "answerContent" : "是正確的",

              "answerTrue" : "Y",

              "answerComment" : "測試啊"

           },

 

           {

              "answerContent" : "是錯誤的",

              "answerTrue" : "N",

              "answerComment" : "測試啊"

           } ];

          

           var exercisesAnswerDto={

                  "answerInfos":answerInfos,

                  "exercisesInfo":exercisesInfo

           };

           console.log(JSON.stringify(answerInfos));

           $.ajax({

              url : "/droneSchool/exercises/insertExercisesInfo",

              type : "POST",

              traditional :true,

              contentType: 'application/json',

              data:JSON.stringify(exercisesAnswerDto),

              success : function(result) {

              }

           });

       }

    </script>

 

封裝類:

 

public class ExercisesAnswerDto {

 

    /**習題**/

    private ExercisesInfo exercisesInfo;

   

    /**答案列表**/

    private List<AnswerInfo> answerInfos;

   

  

 

Controller代碼:

@Controller

@RequestMapping(value = { "/exercises" })

public class ExercisesInfoController {

 

    @RequestMapping(value={"/insertExercisesInfo"})

    @ResponseBody

    public DtoResult<Integer> insertExercisesInfo(@RequestBody ExercisesAnswerDto exercisesAnswerDto) {

 

   

       return null;

 

    }

 

}

 

 

第二種方式:將多個參數以字符串形式接收:

前端代碼:

<script type="text/javascript">

       function go() {

   

          

           var exercisesInfo = {

              sectionId : "1",

              exerciseContent : "是否正確?",

              exerciseComment : "測試"

           };

 

      

          

           var answerInfos = [ {

              "answerContent" : "是正確的",

              "answerTrue" : "Y",

              "answerComment" : "測試啊"

           },

 

           {

              "answerContent" : "是錯誤的",

              "answerTrue" : "N",

              "answerComment" : "測試啊"

           } ];         

           $.ajax({

              url : "/droneSchool/exercises/insertExercisesInfo",

              type : "POST",

              data : {

                  answerInfos : JSON.stringify(answerInfos),                 

                  exercisesInfo : JSON.stringify(exercisesInfo)

              },

              success : function(result) {

              }

           });

       }

    </script>

 

Controller

@Controller

@RequestMapping(value = { "/exercises" })

public class ExercisesInfoController {

 

    @RequestMapping(value={"/insertExercisesInfo"})

    @ResponseBody

    public DtoResult<Integer> insertExercisesInfo(String answerInfos,String exercisesInfo) {

 

       return null;

 

    }

 

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章