在后台判断参数是否为空时应当注意的一点
当我们在页面使用超链接进行数据提交时,如果碰到换行时需要特别注意。
?????? 如:
?
<a href="comm_searchByClassAll.do?method=findProductByModel&cityId=${cityId } &brandCode=${brandCode }" style="margin: 0cm 0cm 0pt;">注意看其中的 cityId=${cityId }与&brandCode=${brandCode }之间是一个换行。本来我的想法是,如果cityId的参数为空,在后台使用
if(cityId == null || "".equals(cityId)) { ......... }???
这么一句就可以判断是否为空。可是不管我怎么弄,就是没有判断出来,非常让我郁闷!
后来仔细对比了一下浏览器状态栏上的路径,看到当cityId为空时,后面有很长的一段空白。
如:cityId=${cityId }???????????????????????? ...........
此时我想到会不会是因为这一段空白,而导致判断失效?
?????? 经过实验,终于发现确实如此,也就是说如果我们在cityId后面加了一个换行符,那么它默认为很长的一段空白,而不是简单的一个空字符:“”。如此一来,我们只需在后台使用如下方式即可以:?
?
if(cityId.trim() == null || "".equals(cityId.trim())) { .................. }???
这样就可以将多余的空白去掉,再进行判断是否为空。
其实我们平时在判断一个字符串是否为空时,应该养成这种习惯,就是对要判断的字符串,先进行trim()处理,这样就不会出现一些莫名其妙的问题了!
?
?
?
?
?
?
?
?
?
?
?
?
?
1 楼 fly_ever 2008-10-24 你这里还是不对啊。
引用
if(cityId.trim() == null || "".equals(cityId.trim())) { .................. }
如果cityId为null的话,就不会有trim()方法了,你这句话就要报错了。
所以前面那个应该为
null== cityId 2 楼 amcucn 2008-10-25 cityId为null的话,就不会有trim()方法了,你这句话就要报错了。
所以前面那个应该为
null== cityIdfly_ever 写道
你这里还是不对啊。
引用
if(cityId.trim() == null || "".equals(cityId.trim())) { .................. } 如果cityId为null的话,就不会有trim()方法了,你这句话就要报错了。所以前面那个应该为null== cityId
你说的没错,这里应该写成request.getParameter("cityId").trim() 3 楼 joylili 2008-10-27 俺不明白了,你为什么加换行符呀?(还是当时粗心多打的?)如果要是传两个或两个以上的参数就"&"做连接就好了.小女子不懂,有望指教!谢谢! 4 楼 amcucn 2008-10-27 joylili 写道
俺不明白了,你为什么加换行符呀?(还是当时粗心多打的?)如果要是传两个或两个以上的参数就"&"做连接就好了.小女子不懂,有望指教!谢谢!
加换行符是因为代码过长,然后为了方便阅读,所在才加的! 5 楼 zhmy0129 2011-11-17 org.apache.commons.lang.StringUtils
StringUtils.isBlank()
判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
StringUtils.isNumeric()
判断数字