1. 程式人生 > >SSM框架-介面入參引數如何接收List集合?

SSM框架-介面入參引數如何接收List集合?

後端虛擬碼
關鍵點:使用@RequestBody註解,它將“JSON字元”對映到List物件
@RequestBody(required = false) :表示當對映的List為空時不做異常捕抓。預設required=true,當List為空時會拋異常,導致無法進入方法體

/**
 * 
 * @author ligy
 * @Description 地市監測
 * @Title: city
 * @date 2018/07/30 10:30:23
 */
@Controller
@RequestMapping(value = "/city")
public class city{

		private static final int SUCCESS_CODE = 200;
		
		private static final int ERROR_CODE = 500;
		
		/**
		 * @author ligy
		 * @description 儲存地市編碼、名稱
		 * @title saveCityList
		 * @param cityList 地市集合
		 * @date 2018/07/30 11:13
		 */
		@RequestMapping(value = "saveCityList")
		@ResponseBody
		public int saveCityList(@RequestBody(required = false) List<City> cityList){
			if (cityList != null && cityList.size() > 0){
				//執行儲存操作
				

				return SUCCESS_CODE;
			}
			return ERROR_CODE;
		}
	}

City實體類
前端需要根據實體類的***引數名稱***組裝資料

/**
 * @author ligy
 * @description 地市實體類
 * @title City
 * @date 2018/7/30 11:13
 */
public class City {
    /**
     * 地市名稱
     */
    private String cityName;

    /**
     * 地市編碼
     */
    private String cityCode;

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public String getCityCode() {
        return cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }
}

前端虛擬碼
關鍵點:ajax配置之data的配置,需要將待傳輸的Array陣列格式化成“JSON字串”進行傳輸,使用API操作:JSON.stringify(objArr);

function saveCityList() {
    var cityArr = ["1000-北京","2900-上海","5810-廣州","5840-深圳","1100-天津","3010-南京","3310-杭州"];
    var objArr = [];
    $.each(cityArr,function (i, item) {
        var obj = {};
        //分割得到地市編碼、地市名稱
        var tempArr = item.split("-");
        var cityCode = tempArr[0];
        var cityName = tempArr[1];
        obj.cityCode = cityCode;
        obj.cityName = cityName;
        objArr.push(obj);
    });

    $.ajax({
        url: "/city/saveCityList",
        data: JSON.stringify(objArr),
        type: "POST",
        contentType: "application/json;charset=UTF-8",
        success: function (result) {
            if (result == 200){
                console.log("儲存成功!");
            } else {
                console.log("儲存失敗!");
            }
        }
    });
}

***測試結果:***可以看到,List獲取到了前端傳輸過來的引數
這裡寫圖片描述