1. 程式人生 > >ajax-傳遞map集合,springboot接收引數

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) {
					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 = request.getParameterNames();
		List<String> listQuotaId = new ArrayList<String>();
		while (enuq.hasMoreElements()) {
			String name = (String) enuq.nextElement();
			// 獲取quotaId 封裝成 集合再遍歷
			if (name.contains("quotaId")) {
				listQuotaId.add(name);
			}
		}
		List<LeaderQuotaJson> listQuotaJsons = new ArrayList<LeaderQuotaJson>();
		// 獲取quotaId 封裝成 集合再遍歷
		for (int i = 0; i < listQuotaId.size(); i++) {
			String quotaIdIndex = listQuotaId.get(i);
			quotaIdIndex = quotaIdIndex.substring(8, 13);
			Integer leaderId = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][leaderId]"));
			String uuid = request.getParameter("mapJson[" + quotaIdIndex + "][uuid]");
			Integer quotaId = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][quotaId]"));
			Integer scroe = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][scroe]"));
			LeaderQuotaJson leaderQuotaJson = new LeaderQuotaJson(leaderId, uuid, quotaId, scroe);
			listQuotaJsons.add(leaderQuotaJson);
		}
		//迴圈呼叫插入方法
		for (LeaderQuotaJson leaderQuotaJson : listQuotaJsons) {
			iSysIndexService.saveQuotaComment(leaderQuotaJson.getLeaderId(), leaderQuotaJson.getUuid(), "",
					leaderQuotaJson.getQuotaId(), leaderQuotaJson.getScroe(),yearDetailId);
		}
		return setResultSuccess("提交成功");
	}

三,原理說明

程式碼中業務程式碼較多,這裡簡單說明一下實現的原理,前端,實際上使用的陣列,var map={}  資料結構的儲存效果類似於java中的map集合,同一key後插入的資料會替換之前的資料;

後端也在網上找了很多框架接收map集合的方法,都未實現成功,決定用最原始的request中獲取物件,進行分析和重新封裝,並與業務進行結合,第一步獲取map中的所有key值

Enumeration<String> enuq = request.getParameterNames();
		List<String> listQuotaId = new ArrayList<String>();
		while (enuq.hasMoreElements()) {
			String name = (String) enuq.nextElement();
			// 獲取quotaId 封裝成 集合再遍歷
			if (name.contains("quotaId")) {
				listQuotaId.add(name);
			}
		}

第二步,從request.getParameter("mapJson[" + quotaIdIndex + "][leaderId]")獲取對應引數的值即可,其中mapJson為js中傳入引數的引數名稱

相關推薦

ajax-傳遞map集合springboot接收引數

一,需求如下 1.前端js封裝map物件,通過ajax發起請求,後端通過springboot進行引數的處理 二,js前端資料結構,其中id為業務中的指標編號 var map = {}; var obj = { leaderId : leaderId,

隨筆:ajax傳遞數組layui父子頁面傳值下來菜單賦值父頁面數據獲取表格數據替換為字符串

形式 子頁面 html title NPU 傳遞 form 開啟 設置 一.Ajax向後臺傳遞數組問題:(聲明前臺我使用的layui框架)例:我們要多前臺一個數據表格進行批量刪除操作,我們通過復選框選中數據id,將id存入一個數組中,然後利用ajax傳遞給後臺,完成批量刪除

FastJson的學習之JSON互相轉Map集合List集合JavaBean

https://blog.csdn.net/weixin_36910300/article/details/79182120 建立兩個實體類 一個是部門類,一個是部門員工類 部門員工類 public class Person { private Integer id; priv

JAVA——利用Map集合再複雜的JSON資料轉換都不慌!

在我們悲催的碼農開發過程中百分百會接觸到Json資料,並且有時候還需要把JSON資料轉換成JAVA物件,簡單的JSON資料轉換成JAVA物件很簡單,簡單的JSON資料可能只需要兩個JAVA類,一個接收最外層的資料,一個接收集合,但是對於複雜的JSON,有很多層而且不規則,那麼再用這種方法一個個轉

Java後臺跳轉到前端頁面傳遞字串陣列前端接收轉成陣列物件

1、後臺使用JFinal 框架:     setAttr("list",JsonKit.toJson(page));  //這裡使用JsonKit先將集合轉成json,這樣傳到前臺就會是標準的 key,value都帶有    // 雙引號的字串, 如果直接放入集合沒轉成j

使用Map集合PreparedStatement 介面對 MySQL 語句中的?佔位符進行設定

使用?佔位符的原因:Statement不安全,存在SQL注入防風險! 涉及知識點:Map集合,PreparedStatement 介面,MySQL資料庫,ResultSet結果集 使用方法: 博主是用的是 eclipse Jee IDE,使用MySQL需要在 .....\工程名\We

js引數傳遞陣列物件修改此引數會影響原陣列嗎

1,方法中改變了原資料的,會影響原陣列,包括單個的賦值,排序 var a = [1,2,3]; function test(arr){ arr[0] = 4;//直接改變原陣列的第一個資料,影響原陣列,故改變了原陣列。 console.log(arr);//

Mybatis 對映結果集為Map集合支援資料庫動態加列

1.需求場景 報表統計需求,資料庫頻繁調整返回資料欄位。 2.專案環境 Spring spring mvc mybatis 3.實現方法 (1)mapper.xml配置檔案 <select id="getDataList" parameterType="ma

map集合遍歷的三種方式

package test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; /** * * @auth

Ajax傳遞List集合

前臺程式碼: var codes=new Array(); $(".bottlecode").each(function(){ codes.push($(this).val());

使用JSON傳遞接收集合物件map for json,json for java

//傳送方 public static void main(String[] args) { String mobiles = "15810022404"; String content =

Ajax跨域請求無法傳遞接收cookie資訊

最近在做一個系統遇到一個問題,在網上找個一個和我遇到相同問題的(原文地址:https://www.cnblogs.com/helloyy/p/6109665.html)按照他的步驟還是沒有解決,繼續查詢資料,根據他的方法做出修改,最後解決。(不想寫字就自己拿過來了。。) 應用場景:   專案測試環境:前端

使用Ajax傳遞接收資料實現註冊和註冊成功後跳轉

返回狀態資訊實體類省略get和set private String stauts; private String msg; 控制器 @RequestMapping(value = "register", method = RequestMetho

Ajax+json 前後臺互動以及Map集合通用查詢

1. jackson Jackson是一個簡單基於Java應用庫,Jackson可以輕鬆的將Java物件轉換成json物件 和xml文件,同樣也可以將json、xml轉換成Java物件 fastjson/jackson/goso javaBean與Map集合轉換

Ajax+json 前後臺互動以及Map集合通用查詢.

jackson Jackson是一個簡單基於Java應用庫,Jackson可以輕鬆的將Java物件轉換成json物件 和xml文件,同樣也可以將json、xml轉換成Java物件 fastjson/jackson/goso javaBean與Map集合轉換成j

ajax傳遞接收引數以及事件委託

   Python序列化         字串 = json.dumps(物件)        物件->字串         物件 = json.loads(字串)           字串->物件              JavaScript:        

頁面跳轉間引數傳遞新頁面接收引數的方法

function query(name) {     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  

java端使用註解接收引數ajax請求注意

springMVC專案中,後臺Java方法使用註解獲取引數,ajax請求時分兩種情況 {     1:後臺使用@requestParam     2:後臺使用@requestBody時 } 1:後臺使用@R

SpringMVC引數值的傳遞引數接收陣列接收模型接收多個模型接收以及資料回顯批量操作)

引數接收 陣列接收 模型接收 多個模型接收 當我們一個頁面中包含多個表單,提交到不同的控制器方法時。我們使用模型進行引數接收時可將模型都封裝到bean類中,資料回顯時可直接bean.模型

Android通過自定義Application使用Map集合做全域性引數傳遞

Android中我們一般會使用Intent的putExtra做資料傳遞.還有另一種方法,通過自定義Application使用Map集合做全域性引數傳遞.Application本來就全域性只有一個,之前自己還傻傻地寫成單例.現在改成這種寫法: public class Ba