问题概述:
在前台,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
}
@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);
}
此时返回的数据是一个PersonInfoForm的实例,由ajax的resp.data接收
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()。