Controller方法莫名其妙的執行兩次

    最近在做項目時,同事遇到ajax調用一個Controller方法後,該方法在不返回前臺的情況下執行兩次,導致數據保存了兩遍。

簡略代碼如下:

js代碼如下:

$.ajax({ 
	cache :false,
	type: "POST",
	url: "${ctx}/3typePerson/newUserSave",
	dataType: "JSON",
	data: $("#editForm").serializeArray(),
	success: function(data){
		alert('成功');
	},
	error: function (XMLHttpRequest, textStatus, errorThrown) {             
		alert('失敗');
        }		
});

Controller方法:

@RequestMapping(value = "/newUserSave", method = RequestMethod.POST)
public void advanceCaseinfoSave(String id,BjNetcase3typeCompany bjNetcase3typeCompany,
		BjNetcasebaseinfo bjNetcasebaseinfo,
		HttpServletRequest request, HttpServletResponse response) throws Exception {
	Map<String,Object> resMap = new HashMap<String,Object>();
			
	resMap.put("caseid", info.getId());
	resMap.put("caseno", info.getCaseno());
	resMap.put("success", true);
	
	response.getWriter().write(JSONUtil.writeMapJSON(resMap));
}

最後查找發現罪魁禍首,是過濾器!!!

總結:如果一個過濾器方法中chain.doFilter(request, response);語句出現一次以上,每一句後面一定把return;語句加上!!!否則後臺同一方法就會被調用多次!!!

請關注我微信公衆號:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章