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 resMap = new HashMap();
			
	resMap.put("caseid", info.getId());
	resMap.put("caseno", info.getCaseno());
	resMap.put("success", true);
	
	response.getWriter().write(JSONUtil.writeMapJSON(resMap));
}

最后查找发现罪魁祸首,是过滤器!!!

Controller方法莫名其妙的执行两次_第1张图片

总结:如果一个过滤器方法中chain.doFilter(request, response);语句出现一次以上,每一句后面一定把return;语句加上!!!否则后台同一方法就会被调用多次!!!

请关注我微信公众号:

你可能感兴趣的:(java,程序开发)