【问题标题】:request getParameter is always null when using enctype="multipart/form-data"使用 enctype="multipart/form-data" 时请求 getParameter 始终为 null
【发布时间】:2023-04-01 22:54:01
【问题描述】:

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

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


代码

signup.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)
    }

}

【问题讨论】:

  • 您应该告诉我们您使用的是哪个框架。另外,请重新阅读您发布的链接。您不想使用 enctype="multipart/form-data"
  • 另一个错误是这个 type="email" 应该是 type="text"
  • @rickz 我没有使用任何框架,只是 Serlvet 和 JSP,在 TomCat 上运行它
  • 修复这两个错误。
  • 接受@Perdomoff 的回答

标签: java validation jsp servlets jakarta-ee


【解决方案1】:

除非您打算使用表单来上传文件,否则无需指定“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 对于所有发布的参数。”

输入类型:电子邮件

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

【讨论】:

    【解决方案2】:

    由于它是一个多部分/表单数据(通常用于上传一个/多个文件)表单,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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2013-10-21
      • 1970-01-01
      相关资源
      最近更新 更多