【问题标题】:How to save multiple form data using one submit button如何使用一个提交按钮保存多个表单数据
【发布时间】:2018-06-02 20:27:12
【问题描述】:

在我的 jsp 页面中,我有两个表单。一个表单操作发送到 save_product servlet,另一个发送到 save_images servlet。只有一个提交按钮。当首先点击提交按钮时,我想保存产品,然后想保存图片。

我使用 jQuery 和 Request.getRequestDispatcher(String).forward() 进行了尝试,但没有成功。

这是我的jsp:

    <button type="submit" class="btn btn-default" id="formsave1">Save</button>

    <div class=container>
     <div class="panel">
        <form action="../save_product" method="POST"><button type="submit" id="formsave2" ></button> 
    </div>
      <div class="panel">
        <form action="../save_images" method="POST" enctype="multipart/form-data">
             <button type="submit" id="formsave3"></button>
</div>
    </div>

产品保存 servlet:

req.getRequestDispatcher("save_images").forward(req, resp);

jQuery:

  $(document).ready(function () {
                $(formsave1).on("click", function (e) {
                    alert('CLICKED 1');
                    $('#formsave2').click();
                       alert('CLICKED 2');
                });

【问题讨论】:

  • 你不能这样转发请求。如果您想“转发”您需要使用response.sendRedirect 的请求。但是您将无法将其与 POST 一起使用,因为它不会保留参数...为什么不直接修复您的后端,这样您只需要调用 1 个 servlet?
  • @JonathanLaliberte 这不是真的,您可以将请求转发到另一个 servlet,包括所有 POST 或 GET 参数。
  • 您的代码似乎没有任何问题,或者给定的数据不足以提供答案。请记住,如果日期是通过 POST 发送的,doPost() 将在两个 servlet 中被调用。
  • 谢谢你们俩。 req.getRequestDispatcher("save_images").forward(req, resp);是正确的。它访问 save_image servlet。
  • 啊有趣。很高兴知道。感谢 Roshana 的更正。

标签: jquery html jsp servlets requestdispatcher


【解决方案1】:

您的代码不足以完全识别问题。我无法发现问题。

但是,根据您的 html 代码,我猜这两个 servlet 都在同一个包中。在这种情况下,您可以直接调用save_imagesdoPost()doGet() 方法,因为它们都有protected 访问修饰符。

毕竟没有必要使用 Requestdispatcher。

new save_images().doPost(req, resp);

【讨论】:

  • 我不能直接调用它。我这样做了。 save_images s = 新的 save_images(); s.doPost(req, resp);这是正确的。
  • 哦...是的,我的错。它不是静态的,所以你必须创建一个类的对象..
猜你喜欢
  • 2012-01-23
  • 2019-02-10
  • 2021-08-11
  • 1970-01-01
  • 2017-05-03
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多