当我提交表单时为什么不能输入这个servlet的doPost()方法?

时间:2014-12-01 13:43:29

标签: jquery jsp java-ee servlets

我是JSP和Servlet开发的新手,我必须做以下事情:

我有一个包含JQuery按钮元素的JSP页面。

<th width = "8.33%">
  <form action="salwf.do" method="post">
    <button name="status" value="Accept" class="acceptButton">ACCEPT BUTTON</button>
    <button name="status" value="Cancel" class="cancelButton">CANCEL BUTTON</button>
    <button name="status" value="SAP" class="sapButton">SAP ICON BUTTON</button>
  </form>
</th>

如您所见,我将此按钮元素放入表单中。每个按钮都有一个名为status的属性,用于所有按钮和每个按钮的特定值(第一个按钮为Accept,第二个按钮为Cancel,第三个按钮为Sap按钮)。

好的,现在我想将此表单提交给处理包含表单的页面的Servlet。此页面包含以下URL:

http://localhost:7001/edi-mon/salwf.do

这是web.xml文件中的servlet配置(Servlet定义和Servlet URL映射):

<servlet>
    <servlet-name>salwf</servlet-name>
    <servlet-class>it.sistinf.ediweb.monitor.servlets.Salwf</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>salwf</servlet-name>
    <url-pattern>/salwf.do</url-pattern>
</servlet-mapping>

然后我有Salwf类来实现HttpServlet接口并处理这个JSP页面。 所以这个Servlet也要处理上一个表单的帖子,为此我已经在这个类中实现了doPost()方法,这样:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
    String status = request.getParameter("status");
}

所以我跳过检索JQuery点击按钮的status名称的值,但它没有用。

调试应用程序时,我尝试单击按钮,但我从未进入doPost()方法,因此我无法检索状态请求参数的值。

为什么呢?我错过了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这应该有效,不涉及jQuery。有点匆忙,所以在代码上不能太精致。

<th width = "8.33%">
  <form action="salwf.do" method="post" name='theForm'>
    <button value="Accept" class="acceptButton" onclick='setVal("accept")'>ACCEPT BUTTON</button>
    <button value="Cancel" class="cancelButton" onclick='setVal("cancel")'>CANCEL BUTTON</button>
    <button value="SAP" class="sapButton" onclick='setVal("sap")'>SAP ICON BUTTON</button>
    <input type='hidden' name='status'>
  </form>
</th>
<script>
function setVal(buttonCmd) {
   document.forms['theForm'].status.value = buttonCmd;
   document.forms['theForm'].submit();
   return false;
}

</script>

它是如何工作的:它在每个按钮的点击事件上绑定一个js函数,当按下按钮时,隐藏输入的值命名为&#34; status&#34;根据按钮本身设置一个值,并提交表单。

可能有更优雅和更清晰的方式,但这是我脑海中最容易实现的,而不会进入HTML结构的深层次。