一、问题
今天,出现了JSP页面请求Controller层方法,方法返回后自动再次执行第二遍的问题。
二、调试过程
1、后台逻辑有误?
用IDE的调试程序检测了一遍,发现每次正常返回web容器后,会再回头调一遍本方法;最初以为是后台逻辑的问题,但本方法内容比较简单,没有复杂的代码逻辑,所以排除了后台方法逻辑错误的因素;
2、页面请求了两次?
使用Chorme浏览器,在页面打断点测试页面请求是不是请求了两次,经过测试发现,页面只发生一次请求,排除页面重复提交的因素。
3、页面JS有误?事件重复?
查了一遍JS代码,并没有发现重复事件或者id重复发生。排除JS代码的因素;之前有一个同事遇到过同样的问题,原因是JSP的页面头一个meta开头的引用重复,参数冲突。
三、错误原因
排查过程中发现页面中有使用以下方式的按钮绑定事件
$("#advancepay_button").on('click', function() {
$("#advancepay_button").attr("disabled",true);
});
四、处理
只需要在使用过绑定事件调用方法成功之后增加解绑定动作就可以了。具体语句如下:
$("#submit_button").unbind('click');