【问题标题】:request.getParameter() on submit buttons name returns always null提交按钮名称上的 request.getParameter() 始终返回 null
【发布时间】:2017-11-14 15:42:36
【问题描述】:

我的网站上有一个联系表,我正在尝试让它向我发送电子邮件。电子邮件发件人类工作正常问题是当我尝试从表单中获取参数时,它总是返回空值。我以另一种简单的形式进行了测试,代码有效,但不适用于我自己的形式。这是来自jsp文件的表格。

<!-- Contact Form -->

<div class="col-md-6">
  <form id="contact" class="contact-form row" role="form" method="post">
    <div class="col-md-12 text-center">
      <h5 class="successContent">
        <i class="fa fa-check left" style="color: #5cb45d;"></i>Your message has been sent successfully.
      </h5>
      <h5 class="errorContent" style="color: #e1534f;">
        <i class="fa fa-exclamation-circle left"></i>There was a problem validating the form please check!
      </h5>
    </div>

    <div class="col-md-12">
      <div class="form-field-wrapper">
        <input class="input-lg form-full" id="form-name" type="text" name="name" placeholder="Your Name" required />
      </div>


    </div>

    <div class="col-md-12">
      <div class="form-field-wrapper">
        <input class="input-lg form-full" id="form-email" type="email" name="email" placeholder="Email" required />
      </div>
    </div>

    <div class="col-md-12">
      <div class="form-field-wrapper">
        <input class="input-lg form-full" id="form-subject" type="text" name="subject" placeholder="Subject" />
      </div>
    </div>

    <div class="col-md-12">
      <div class="form-field-wrapper">
        <textarea class="home-contact-txt-msg input-lg form-full" id="form-message" rows="7" name="message" placeholder="Your Message" required></textarea>
      </div>

    </div>

    <div class="col-md-12">
      <input class="btn-contact-submit btn btn-lg btn-black" type="submit" name="submit" value="Send Message">
    </div>
  </form>
</div>
</div>
<!-- Contact Form End -->

这是我需要获取参数的部分。

<div class="col-md-12">
  <input class="btn-contact-submit btn btn-lg btn-black" type="submit" name="submit" value="Send Message">
</div>

这是电子邮件发送代码。

<%
    String status = null;
    String parameter = null;

    //If request is submit, sending email.
    if (request.getParameter("submit") != null) {

        EmailSender email = new EmailSender();
        email.setMailServerProperties();

        //Email subject.
        String emailSubject = "Message from asdasd.com";
        //Email body.
        String emailBody = "";

        //If name is not empty, adding name to email body.
        if (request.getParameter("name") != null) {
            emailBody = "Sender Name: " + request.getParameter("name") + "<br>";
        }

        //If email is not empty, adding email to email body.
        if (request.getParameter("email") != null) {
            emailBody = emailBody + "Sender Email: " + request.getParameter("email") + "<br>";
        }

        //If subject is not empty, adding subject to email body.
        if (request.getParameter("subject") != null) {
            emailBody = emailBody + "Subject: " + request.getParameter("subject") + "<br>";
        }

        //If message is not empty, adding message to email body.
        if (request.getParameter("message") != null) {
            emailBody = emailBody + "Message: " + request.getParameter("message") + "<br>";
        }

        //Creating email object with emailSubject and emailBody.
        email.createEmailMessage(emailSubject, emailBody);


        /*
        try {
            //Sending email.
            email.sendEmail();          
        } catch (MessagingException me) {
            out.print(me.getMessage());         
        }
        */
        status = "Email sent.";
        parameter = request.getParameter("submit");
        out.print(status + parameter);
    } else {
        status = "Email not sent.";
        parameter = request.getParameter("submit");             
        out.print(status + parameter);
    }
%>   

当单击表单提交按钮时,如何使这部分(request.getParameter("submit") != null) 为真?

编辑:我注意到了一些东西。我无法获取此页面中任何字段的参数,不仅是提交按钮。

Edit2:经过多次尝试后,工作代码开始无法正常工作。问题可能与apache tomcat有关吗?有什么方法可以在没有服务器问题的情况下始终如一地进行测试。

【问题讨论】:

  • 1.向表单标签添加一个动作 2. 将提交按钮从 name="submit" 重命名为其他任何名称 - 例如 name="Submit" 并更改 JSP 以反映该更改。永远不要调用任何你可能想要编写脚本 name="submit" 的东西,因为它会影响表单提交事件
  • @mplungjan 都试过了,还是不行。我认为问题与 html 相关,因为当我在一个简单的表单上执行此代码时,此代码可以正常工作。
  • 您说“Email Sender 类工作正常”,但请尝试删除所有与 EmailSender 相关的代码或围绕它的 try-catch 块并再次检查是否工作。此外,您可以将 MVC 与 JSP-Servlets 一起使用,将 java 代码放入 Servlets 类中。
  • @GurkanYesilyurt 我已经在使用弹簧了。我以这种方式发布,以便您轻松阅读。我通过用围绕它们的 div 展开 解决了这个问题。我不知道这种方式,但它确实有效。

标签: java html forms jsp servlets


【解决方案1】:

您是否在 JSP 文件中添加库?赞&lt;%@ page import = "java.io.*,java.util.*" %&gt;

【讨论】:

  • 是的,java代码没有问题。奇怪的是,当我制作一个没有用 divs 包装的新表单时,它起作用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2011-06-30
  • 2016-05-31
相关资源
最近更新 更多