1. 分页问题:
在分页的查询SQL中,要注意排序字段部分,排序字段中要有一个字段确保该查询结果排序的唯一性,否则,会出现类似下面的情况:
若查询SQL为:
SELECT t.DictID,t.Type,t.DictNo,t.DictVal,t.Flag,t.Stat,t.SeqNo,t.Remark
FROM TrainBDDict t
ORDER BY t.SeqNo
第一页有记录A,第二页有可能也会出现记录A,原因就是排序字段t.SeqNo值是可能存在相同值,不能确保查询结果在不同的查询范围内顺序的唯一性,可能导致某条记录多次出现在不同页中;
上面的查询SQL应改为:
SELECT t.DictID,t.Type,t.DictNo,t.DictVal,t.Flag,t.Stat,t.SeqNo,t.Remark
FROM TrainBDDict t
ORDER BY t.SeqNo, ,DictID(主键)
2. 查询注意事项
带有查询输入框的页面,查询时应注意问题如下:
1) 确定进入该查询页面是否要把光标聚焦在该查询输入框中(视具体需求而定);
2) 确定查询内容是否允许为空,判断是否为空时要先trim()(视具体需求而定);
3) 确定是否要trim查询内容两端的空格然后在查询;
4) 确定是否要限制输入的字符内容,如某些特殊字符(视具体需求而定);
5) 当输入不合规范时,弹框提示用户,用户确定后,要把光标聚焦在输入框中,是否要清空输入内容,视具体清空而定;
6) 查询输入框要限制输入内容的长度(maxLength),否则输入内容很长时会报错;
3. 兼容性测试问题
在多种测试环境下进行测试即软件兼容性测试:
1) 兼容性测试是指待测试项目在特定的硬件平台上,不同的应用软件之间,不同的操作系统平台上,在不同的网络等环境中能正常的运行的测试。
2) 兼容性测试的目的:待测试项目在不同的操作系统平台上正常运行,包括待测试项目能在同一操作系统平台的不同版本上正常运行;待测试项目能与相关的其他软件或系统的 “和平共处”;待测试项目能在指定的硬件环境中正常运行;待测试项目能在不同的网络环境中正常运行。
3) Web兼容性测试主要是针对不同的操作系统平台,浏览器,以及分辨率进行的测试:
4) 不同分辨率,如1024*768;1280*1024等
5) 不同浏览器,如IE,FireFox等
6) 相同浏览器的不同浏览器版本,如IE6,IE8等
7) 不同操作系统,如Windows,Linux等
兼容性测试无法做到完全的质量保证,但对于一个项目来讲,兼容性测试是必不可少的一个步骤,具体测试哪些项视具体需求而定;
4.数据保存/删除注意事项
在点击保存/删除等按钮时,为了避免用户快速连续多次点击按钮时有可能多次执行保存/删除请求而造成不必要的异常,应在适当的时机禁用或启用按钮,示例如下:
//保存培训机构信息 function saveOrgInfo (buttonObj) { //校验输入信息 if(!checkOrgInfo()){ return; } buttonObj.disabled = true; //禁用保存按钮防止多次提交 var url = "<%=baseURL %>/train/org/saveInfo.spring"; //ajax方式提交表单 try { $.ajax({ type : "post", dataType : "json", url : url, data: $("#contentForm").serialize(), success : function(data) { …… buttonObj.disabled = false; //启用保存按钮 } }); } catch (e) { buttonObj.disabled = false; //启用保存按钮 alert(e.message); } }
5.表单reset功能
FORM表单提交后reset功能失效?
最近使用表单时发现一个问题,就是表单提交后,再使用reset按钮重置输入框,这时reset不起作用。其实,并不是没起作用,而是我们误解了reset的功能.
reset的功能是重置表单为默认值,并不一定是清空表单。
由于form提交后,输入框的默认值可能不为空(保存了上次查询的值),例如值为aa,不管怎么reset都会变为aa,就算输入bb后,再reset也会变成aa,而不是为空值。
可见,是自己对reset按钮功能的误解,才觉得reset不起作用,同样可能很多人都会有这样的误解。
解决方法:可使用js功能重置表单中文本输入框为空值
$(":reset").click(function(){
var resetArr = $(this).parents("form").find(":text");
for(var i=0; i<resetArr.length; i++){
resetArr.eq(i).val("");
}
return false;//一定要return false,阻止reset按钮功能,不然值又会变成aa
});