java - 使用 enctype ="multipart/form-data"时请求 getParameter 始终为 null

标签 java validation jsp servlets jakarta-ee

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

我已经添加了 enctype="multipart/form-data" 如前所述 here但现在它总是将 email 识别为 null 并且在成功的情况下我无法转发到登录页面(当 email 不为 null 时)。


代码

注册.jsp

<form method="POST" action="signup" enctype="multipart/form-data">
    <input type="email" name="email" placeholder="tonystark@mail.com">
    <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)
    }

}

最佳答案

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

<form method="POST" action="signup">
    <input type="text" name="email" placeholder="tonystark@mail.com">
     <input type="submit" value="Submit">
</form>

您链接中的最后一段指出:

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

Input type: email

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

关于java - 使用 enctype ="multipart/form-data"时请求 getParameter 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881398/

相关文章:

javascript - 使用带有成功或错误颜色的图标验证输入字段

javascript - 嵌套 View 模型的 Knockout 验证

java - 无法在 eclipse 中将数据从 servlet 发送到 jsp 页面。怎么解决这个问题?

java - 在运行时更改表 - Spring API Rest

java - Mockito + TestNG + String - 测试在没有 Autowiring 的情况下无法工作

java - MVC复杂业务逻辑职责

java - 无法使用 Selenium webdriver Java 单击按钮

数组上的 ASP.NET MVC Range 属性

java - 在 websphere 中将响应代码 403 替换为 404

java - 如何在 JSTL c 中对具有重复列属性的行进行分组 :forEach