2013-05-06 62 views
1

执行服务器端的servlet验证 给出的形式时,我注意到一些问题,我需要验证的名字文本字段Java Servlet的验证困惑

 <form action="Test" method="POST"> 
     <input type="text" name="firstname" /> 
     <input type="submit" value="submit" /> 
    </form> 

Servlet的验证代码不为我工作。它总是看到长度= 0不为空姓名

if(request.getParameter("firstname")==null) 
    { 
     out.println("Error"); 
    }` 

但修改形式加入ENCTYPE =“多部分/格式数据”之后是

<form action="Test" method="POST" enctype="multipart/form-data" > 
     <input type="text" name="firstname" /> 
     <input type="submit" value="submit" /> 
    </form> 

验证代码工作,,,

这里的问题是enctype="multipart/form-data"的功能是什么? 也 为什么request.getParameter(“firstname”)不会为空字段返回null?它返回空字符串

+1

请检查http://stackoverflow.com/questions/4526273/what-does-enctype-multipart-form-data-mean – Ketan 2013-05-06 12:11:53

+1

我很困惑,因为所有的教程我reed做上面的方式与enctype = “multipart/form-data”为什么不起作用? – 2013-05-06 12:49:13

+0

如果您想进行验证,请添加onsubmit =“return functionName();”在形式标签中,如

在脚本 <脚本类型= “文本/ JavaScript的”> 功能使用functionName(){// 这里定义的验证代码 //返回true或false } – Ruju 2013-05-06 13:25:12

回答

2
if(request.getParameter("firstname")==null) 

这检查是否引用String指向null,这不是你想要做的我猜。如果你想检查一个空字符串,这样做:

if(request.getParameter("firstname")==null 
    || request.getParameter("firstname").isEmpty()) 

当使用enctype="multipart/form-data",所有参数都请求体中的编码。这意味着request.getParameter(...)将返回null所有发布的参数。

+0

检查request.getParameter(“firstname”)。isEmpty()会给空指针异常与第二种形式有enctype =“multipart/form-data” – 2013-05-06 12:42:44

+0

@ahmedab​​obakr不,它不会。如果'request.getParameter(“firstname”)== null'评估为'false',它将被评估。 – Uooo 2013-05-06 12:44:18

+0

为什么request.getParameter(“firstname”)不为空字段返回null?它返回空字符串 – 2013-05-06 13:20:13