毕业设计之错误集锦(九)

1.equal与==

从学java的第一天起,equal与==就是绕不开的话题,曾经我以为我n年前就懂了,可是今天才发现自己没有真正的懂,虽说以前把equal和==的规则记得很清楚,但是用的时候还是会出错的,如下是在不定项查询的时候拼接字符串

String sql = " from BasicInfo b where 1=1 ";
		if (null != basicInfo.getCorporation().getIdCard()||"" != basicInfo.getCorporation().getIdCard()) {
			sql = sql + " and b.corporation.idCard = " + basicInfo.getCorporation().getIdCard();
		} 
		if (null != basicInfo.getIdReg()||"" != basicInfo.getIdReg()) {
			sql = sql + " and b.idReg = " + basicInfo.getIdReg();
		}
事实证明,不管我在不定项里输不输入值,他都会把所有的if语句里面走一遍,搞得我的if判定形同虚设,真蛋疼,后来忽然一想,前台到后台传值都是string类型的,怎么能用==呢,遂改成如下

String sql = " from BasicInfo b where 1=1 ";
		if (null != basicInfo.getCorporation().getIdCard()||basicInfo.getCorporation().getIdCard().equal("")) {
			sql = sql + " and b.corporation.idCard = " + basicInfo.getCorporation().getIdCard();
		} 
但是还不合适,遂把
basicInfo.getCorporation().getIdCard().equal("")
拿出来单独试验了一下,结果是好的,此时菜恍然大悟,|| 给短路了,真是画蛇添足啊,我要null干嘛(总以为null是不能用来equal的,后面解释),删掉null的那个之后就好了,但是并不是所有的都好了,有一个还是不行,结果一看,其他好的都是string类型的,而这个不好的是double类型的,好吧,那就转换成string吧,强制转换和toString方法都不能转,那还是用最保险的string.valueOf吧,转好之后我满怀信心的开始运行了,结果还是出错,什么情况?想想了,梳理了一下过程,页面传递过来的空字符串被java自动转换成double,此时变成null,double类型空值转换成string还是空值,那就是.equal(null)了,结果正确,还是第一次见到.equal(null)

2.EXTJS的列排序问题

在extjs中列可以手动排序,也可以自动排序,自动排序是代码如下

store = new Ext.data.Store({
			url : "UserRisk!findRisks.action",
			reader : new Ext.data.JsonReader({
				root : "list",
				id : "id",
				totalProperty : "recordSize"
			}, userRisks),
			sortInfo: {  
				field: 'stateInfo',  
				direction: "DESC" 
			}
		});
注意,这里的排序是相对于数据库查询出来的二次排序,所以感觉起来是跟数据库是相反的


你可能感兴趣的:(毕业设计之错误集锦(九))