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" } });注意,这里的排序是相对于数据库查询出来的二次排序,所以感觉起来是跟数据库是相反的