日期:2014-05-20  浏览次数:20676 次

提交空表单的问题
我今天遇到一个的问题,我在struts的Form中的validate方法中写了如下的代码,在提交表单时只有name一个字段,且是空的提交,后台的输出竟然是这样的!1没有被输入,而且调用name.length()时不但没有报空指针异常,反而输入长度为零!也就是说明此时的name应该是一个""的状态,那为什么就不是null呢?
System.out.println("name=" + name);
if(name == null) {
System.out.println(1);
}
if(name == null || name.length()<1) {
System.out.println(2);
}
System.out.println("name.length=" + name.length());

//后台输出:
name=
2
name.length=0


------解决方案--------------------
name==null是说明你页面的表单里没用叫 <input >叫name的
------解决方案--------------------
你最好这样判断
"".equals(name)
------解决方案--------------------
在页面里的input没写值就代表"",传过来的就是一个长度为零的字符串
------解决方案--------------------
肯定是你的表单当中没有name的这个属性!~!
所以长度才是0啊!~!
你可以用if("".equals(name))判断一下试试!~!
------解决方案--------------------
仔细分析下,可以解释的!
楼主的流程应该不严格!
应该用if else if操作,比较合理安全!

------解决方案--------------------
不填写是name为"",如果表单中没有name这个属性,才会为null。
------解决方案--------------------
如果表单中name 你不填写直接提交 得到的 是leng=0 及“”;
如果表单中没有name 不管你是否填写 直接提交都是null
属性名称不对应,找不到时是null 找到了没有内容 是“”
------解决方案--------------------
if((name == null)&&name.equals("")){...}
另:提交你Form 表单的代码
------解决方案--------------------
如果name==null是说明你页面的表单里没用叫 <input >没有name的这个文本,
要是name==""说明你还没有填写。