我们大概都知道,使用Ajax传递简单参数到服务器端(SpringMVC)的方法,如下:
$.ajax({
type : "POST",
url : CONfig.mec_otm.order + "/cancel",
data : {
"results" : "cmower",
},
dataType : "json",
success : function(json) {
}
});
但如果想要传递一个像List<SelfOrder>
这样的复杂对象(一个 java.util.List 中放了自定义对象com.cmower.database.entity.selforder.SelfOrder)呢?
怎么办呢?
想一想,可以在Ajax传递参数的时候把复杂对象转成JSON字符串,然后在服务器端获取JSON字符串后再转成List<SelfOrder>
。
好像有道理,是吧?
那具体怎么做呢?
先来看客户端代码,我们假设有一个datatables的Table,支持多选
// 获取datatables选择的项目,支持多选,因此获取的结果为一个数组
var _getSelects = function() {
var results = [];
self_order_table.rows({
selected : true
}).data().each(function(selfOrder, i) {
var result = {};
result["scode"] = selfOrder.scode;
result["id"] = selfOrder.id;
results[i] = result;
});
return results;
};
$("#orderBtn").click(function(event) {
var results = _getSelects();
$.ajax({
type : "POST",
url : CONfig.mec_otm.order + "/cancel",
data : {
"results" : JSON.stringify(results),//转成json字符串
},
dataType : "json",
success : function(json) {
});
return false;
});
@RequestMapping("cancel")
public ModelAndView cancel() {
String jsonStr = getPara("results");
if (StringUtils.isEmpty(jsonStr)) {
throw new OrderException("请选择要撤单的项目");
}
List<SelfOrder> list = JSON.parseArray(jsonStr, SelfOrder.class);
}
可以利用fastjson(JSON.parseArray)对json字符串转成目标的复杂对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。