spring mvc 集合、陣列傳參(本質是json物件的處理)
阿新 • • 發佈:2019-01-30
問題概述:
在前臺,js已經獲取到對應的資料,但這些資料是集合型別(也就是json陣列格式的),此時無法傳遞到後臺。
要進行處理,將json格式的資料轉換成String型別的,就可以成功獲取到了。
下面貼上程式以供參考:
1.實體類
public class PersonInfoView extends BaseView{ private static final long serialVersionUID = 7021289717934645058L; private String personOid; private String personName; private String personIdentityNo; //setter and getter }
public class PersonInfoListForm {
public List<PersonInfoView> personInfos = new ArrayList<PersonInfoView>();
//setter and getter
}
2.ajax請求controller
此時返回的資料是一個PersonInfoForm的例項,由ajax的resp.data接收@RequestMapping(value = "/getPersonsByDept.do") public @ResponseBody ExtJsonForm getPersonsByDept(HttpServletRequest request, String deptGbcode) throws Exception{ PersonInfoListForm personInfoform = new PersonInfoListForm(); if (!StringUtils.isEmpty(deptGbcode)) { List<PersonInfoView> personInfos = personInfoService.getPersonsByDeptCode(deptGbcode); personInfoform.setPersonInfos(personInfos); } return ExtJsonForm.warpExtJsonForm(true,personInfoform); }
3.ajax請求成功後請求的controller
@RequestMapping(value = "/personsToselect.do") public @ResponseBody ModelAndView personsToselect(HttpServletRequest request, String personsInfoForm) { Map<String, Object> hm = new HashMap<String,Object>(); if (personsInfoForm != null) { PersonInfoListForm personList = JsonUtil.formatObject(personsInfoForm, PersonInfoListForm.class); if (personList.personInfos != null) { hm.put("personsInfos", personList.personInfos); } } return new ModelAndView("/web/module/business/personsToSelectFrame.jsp", hm); }
注意:此時以resp.data裡的資料傳遞過來再次發出另一個請求,則引數personInfoForm不可標記為PersonInfoForm,而必須是String型別,因為經過ajax請求成功後獲取到的resp.data裡的資料本身是json格式的,並且是一個json陣列,請求無法解析,必須進行格式轉換。
引數以string形式接收到之後,再使用JsonUtils轉換成PersonInfoForm型別的資料。(JsonUtils為自定義的json轉換器)
4.ajax請求
SW.ajax({
url : Config.ROOT+'/personInfo/getPersonsByDept.do?deptGbcode='+treeNode.value,
method : 'POST',
success : function(resp) {
if (resp.data != null) {
var url = Config.ROOT+"/business/personsToselect.do?personsInfoForm="+JSON.stringify(resp.data);
$("#personsToSelectFrame").attr("src",url);
}
}
});
上述程式碼中,使用JSON.stringify將陣列物件轉換成字串,再進行傳遞即可。
由字串轉換成json格式的方法是JSON.parse()。