[ECSide] 认为列表左侧checkbox有严重bug!

sharong 2007-05-18
这些代码都是从demoAction.jsp例子修改而来。可直接替换这个文件的相应位置。
我在列表页面的ec:extend中有两个button,一个是"查验",一个是“删除”,这两个按钮的操作方式都是先选中若干条数据,然后单击按钮进行操作,具体操作实际是对字段进行置位,也就是执行update操作。
我在页面中的button按钮的ec:extend代码如下:
<ec:extend location="right">
<div style="text-align:right;padding:1px" >
<button type="button" onclick="updateForCheck('${ecTableId}');" style="width:60px" ><font color="red">查验</font></button>
<button type="button" onclick="window.location='<%=contextPath%>/demo.do?operation=insert';" style="width:60px" ><font color="red">新增</font></button>
<button type="button" onclick="deleteSelected('${ecTableId}');" style="width:60px" ><font color="red">删除</font></button>
</div>
</ec:extend>

查验和删除都调用了js方法,两个方法如下,我没有使用ajax:
function updateForCheck(formid){
	//alert('formid = '+formid);
	//document.
	document.getElementById("ec").action = APP_PATH+"/demo.do?operation=operate";
	document.getElementById("ec").target = "_self";
	document.getElementById("ec").submit();
}

function deleteSelected(formid){
	document.getElementById("ec").action = APP_PATH+"/demo.do?operation=delete";
	document.getElementById("ec").target = "_self";
	document.getElementById("ec").submit();
}


按照这种方式可以提交表单,但是我发现,如果先选择几条数据,执行删除之后,接着不选择数据,直接按“查验”按钮,会把刚才删除过的那些数据的某个字段进行置位。

也就是列表里保存了上一次执行批量操作的checkbox的值,这应该是一个严重问题。

通过调试,我发现在以下struts的action类里的代码
String[] id = request.getParameterValues("id");

在第二次执行“查验”按钮,没有选择数据的情况下,仍然可以获得第一次执行“删除”时选择的值,请fins查一下这是怎么回事

顺便问一下,如果用ajax实现批量update,我这里不是在列表页中修改某个字段的值然后保存,而是直接对选中的多个字段的数据表中的某个字段置位,应该看哪个例子中的ajax代码?
看了一下demoAction.jsp中的saveUserInfo(formid)方法,没大看懂。
fins 2007-05-18
你这个原因是由于 那些被选中的参数被 ec的 自动保留表单域的功能给保留了

你可以看一下页面源代码,里面有很多 hidden区域,名字肯定就叫id

你可以使用
<ec:table excludeParameters="id,qqq,www,任何你不希望被保留的表单域的名字...."

的方式来解决
sharong 2007-05-18
fins什么时候可以完成文档啊,像这种功能,你不说,我估计没什么人知道,刚才试了一下,这样设置确实可以,呵呵
fins 2007-05-18
说到痛处了 :'(

wang-dell 2007-05-18
我也好希望fins能完成文档哦!
Global site tag (gtag.js) - Google Analytics