之前一直没找到这个问题的原因,当在装箱单管理页面点击“创建装箱单”按钮时,系统会执行创建装箱单的Action方法,执行完毕后 根据配置跳转到装箱单编辑页面,回到装箱单管理页面查询时,发觉一下创建了两个装箱单!
用断点调试,也找不出原因为何该Action方法执行完毕且已跳转到编辑页面后又再重复执行了一遍该方法,网上搜了好多相关的帖子,导致Action执行两次可能的原因,绝大部分说因为在form里引用了img标签引起的,也有说因为用submit提交引起的,但是我完全没用img标签,是不是submit的原因不敢肯定。找不出原因,只能暂时用其他方法解决这个问题,利用参数判断是第一次执行还是第二次执行了。
做运单管理模块时,实现方式和装箱单类似,但是发现居然没有像创建装箱单一样方法重复执行,从而创建两个运单。后来也没在意,只是随着页面功能的开发,发觉上面那个问题不知什么时候又出现了,经过几番寻找,终于把捣乱者找出来,原来都是跳转到页面就会执行的JS语句引起的:
// 页面加载完成后执行
jQuery(function($){
// 显示待打包合同明细
getToImportOrderGridData('');
})
这个方法是jqGrid表格方法,参数是赋给url的,但因为初始进来只想显示表框架,而没有数据加载,等查询后再加载数据,所以让url设了个空值:
// 显示合同明细
function getToImportOrderGridData(url){
// 跟GridDestroy不同的是table对象跟pager对象并不会被删除,以便下次使用
$("#toBePackGridTable").jqGrid('GridUnload');
$("#toBePackGridTable").jqGrid({
url: url,
datatype: "json",
……
})
没想到,结果导致以上Action方法执行了两次。解决办法,要么把datatype值设为local,要么给url还是赋一个Action方法。