ajax-传递map集合,springboot接收参数
⼀,需求如下
1.前端js封装map对象,通过ajax发起请求,后端通过springboot进⾏参数的处理
⼆,js前端数据结构,其中id为业务中的指标编号
var map = {};
var obj = {
leaderId : leaderId,
uuid : uuid,
quotaId:id,
scroe:parseInt(scroe)+1,
}
map[id] = obj;
ajax部分代码,关键部分为maoJson:map,
$.ajax({
type : "POST",
dataType : "json",
url : "/user/noNameSubmit",
data : {
gid: gid,
mapJson: map,
yearDetailId:yearDetailId,
},
async : false,
success : function(data) {
springboot结构alert(data)
});
⼆,后台controller层代码,说明:quotaIdIndex = quotaIdIndex.substring(8, 13); 这⼀段获取quotaId指标编号 业务中指标编号为5位,与前端封装的quotaId对应
/**
* 获取领导成员评分明细
*
* @param fdusername
* @return
*/
@PostMapping("/user/noNameSubmit")
@Transactional
public @ResponseBody ResponseBase noNameSubmit(HttpServletRequest request,String gid,String yearDetailId) {
Enumeration<String> enuq = ParameterNames();
List<String> listQuotaId = new ArrayList<String>();
while (enuq.hasMoreElements()) {
String name = (String) Element();
// 获取quotaId 封装成集合再遍历
if (ains("quotaId")) {
listQuotaId.add(name);
}
}
List<LeaderQuotaJson> listQuotaJsons = new ArrayList<LeaderQuotaJson>();
// 获取quotaId 封装成集合再遍历
for (int i = 0; i < listQuotaId.size(); i++) {
String quotaIdIndex = (i);
quotaIdIndex = quotaIdIndex.substring(8, 13);
Integer leaderId = Integer.Parameter("mapJson[" + quotaIdIndex + "][leaderId]"));
String uuid = Parameter("mapJson[" + quotaIdIndex + "][uuid]");
Integer quotaId = Integer.Parameter("mapJson[" + quotaIdIndex + "][quotaId]"));
Integer scroe = Integer.Parameter("mapJson[" + quotaIdIndex + "][scroe]"));
LeaderQuotaJson leaderQuotaJson = new LeaderQuotaJson(leaderId, uuid, quotaId, scroe);
listQuotaJsons.add(leaderQuotaJson);
}
//循环调⽤插⼊⽅法
for (LeaderQuotaJson leaderQuotaJson : listQuotaJsons) {
iSysIndexService.LeaderId(), Uuid(), "",
}
return setResultSuccess("提交成功");
}
三,原理说明
代码中业务代码较多,这⾥简单说明⼀下实现的原理,前端,实际上使⽤的数组,var map={} 数据结构的存储效果类似于java中的map集合,同⼀key后插⼊的数据会替换之前的数据;
后端也在⽹上了很多框架接收map集合的⽅法,都未实现成功,决定⽤最原始的request中获取对象,进⾏分析和重新封装,并与业务进⾏结合,第⼀步获取map中的所有key值
Enumeration<String> enuq = ParameterNames();
List<String> listQuotaId = new ArrayList<String>();
while (enuq.hasMoreElements()) {
String name = (String) Element();
// 获取quotaId 封装成集合再遍历
if (ains("quotaId")) {
listQuotaId.add(name);
}
}
第⼆步,从Parameter("mapJson[" + quotaIdIndex + "][leaderId]")获取对应参数的值即可,其中mapJson为js中传⼊参数的参数名称
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论