当我提交包含空白数据的HTML表单时,它仍然会进入下面的else
块:
String n=request.getParameter("uname");
String e=request.getParameter("mail");
String p=request.getParameter("pwd");
if(n==null || e==null || p==null)
{
// ...
} else
{
// ...
}
如何确保它进入if
区块?
答案 0 :(得分:2)
这是因为 uname,mail,pwd 变量不为null,而是这些参数包含空字符串。
即。 UNAME = “”; 邮件= “”; PWD = “”;
当你检查这些参数是否为空时,它会导致为false,你的else块会执行并将记录保存到数据库中。
你可以创建一个检查空字符串的方法。
public static boolean checkEmpty(String value){
if(!(value==null))
return value.isEmpty();
return true;
}
用这个替换你的if条件:
if(checkEmpty(n) || checkEmpty(e) || checkEmpty(p)){
}
答案 1 :(得分:1)
空白提交的输入值未以null
到达。相反,它们作为空字符串到达。 null
仅表示根本没有提交输入值(即输入字段在表单中完全没有)。
如果您不想区分表单中特定输入字段的存在,请将String#isEmpty()
检查添加到if
块。
if (n == null || n.isEmpty() || e == null || e.isEmpty() || p == null || p.isEmpty()) {
// ...
}
您甚至可以为此烘焙自定义实用程序方法。
public static boolean isEmpty(String string) {
return (string == null || string.isEmpty());
}
if (isEmpty(n) || isEmpty(e) || isEmpty(p)) {
// ...
}
你甚至可以在varargs的帮助下进一步重构。
public static boolean isOneEmpty(String... strings) {
for (String string : strings) {
if (string == null || string.isEmpty()) {
return true;
}
}
return false;
}
if (isOneEmpty(n, e, p)) {
// ...
}
如果您还希望覆盖空白,请在string.isEmpty()
之前将string.trim().isEmpty()
替换为所有地方。
答案 2 :(得分:1)
String n=request.getParameter("uname");
if (n != null) n = n.trim();
if (n == null) n = "";
String e=request.getParameter("mail");
if(e != null) e = e.trim();
if(e == null) e = "";
String p=request.getParameter("pwd");
if(p != null) p = p.trim();
if(p == null) p = "";
//
// only process if values for all three exist
//
if((n.length() < 1) || (e.length() < 1) || (p.length() < 1))
{
// ...
} else
{
// ...
}