当使用enctype =“ multipart / form-data”时,request getParameter始终为null

问题描述 投票:4回答:2

我正在验证输入的数据,例如电子邮件,密码,名称等。但是我已经停留在验证的第一阶段,即检查用户是否未输入任何内容。

我已经按enctype="multipart/form-data"的说明添加了here,但现在它始终将email识别为null,如果成功(当电子邮件不为空时,我将无法转发到登录页面。


代码

signup.jsp

<form method="POST" action="signup" enctype="multipart/form-data">
    <input type="email" name="email" placeholder="[email protected]">
    <input type="submit" value="Submit">
</form>

SignUpAction.java

public class SignUpAction implements Action {

@Override
public String handleRequest(HttpServletRequest req, HttpServletResponse resp, DAOFactory dao)
        throws ServletException, IOException {

        String email = req.getParameter("email");

        if (email == null || email.isEmpty()) {
            return "signup";   // It loads signup page again (it works)
        }

        return "login";   // It should go to the login page (it doesn't work)
    }

}
java validation jsp servlets jakarta-ee
2个回答
2
投票

除非您打算使用表单上载文件,否则无需指定“ multipart / form-data”的编码类型。

<form method="POST" action="signup">
    <input type="text" name="email" placeholder="[email protected]">
     <input type="submit" value="Submit">
</form>

链接中的最后一段指出:

“”当使用enctype =“ multipart / form-data”时,所有参数都编码在请求正文中。这意味着request.getParameter(...)然后将为所有发布的参数返回null。“

输入类型:电子邮件

电子邮件是html5输入类型。 How To Use The New Email, URL, and Telephone Input Types


1
投票

由于它是一个多部分/表单数据(通常用于上传一个/多个文件),因此request.getParameter()方法将始终返回null

您可以尝试

 <form method="POST" action="signup" enctype="application/x-www-form-urlencoded">

或完全删除enctype参数。

另一个SO问题中的某些参考。

How to upload files to server using JSP/Servlet?

© www.soinside.com 2019 - 2024. All rights reserved.