【问题标题】:How to determine which submit type button calls a servlet如何确定哪个提交类型按钮调用 servlet
【发布时间】:2017-04-12 22:38:45
【问题描述】:

我有一个表格,里面有一张桌子。每一行都有提交类型的按钮,每个按钮都调用一个 servlet。 每个按钮都有不同的名称属性,但按钮上的标签是相同的。

在被调用的 servlet 中,我想确定按下了哪个按钮并调用了该 servlet。

<form method='POST' action='/Assignment/DateRequestServlet' name='daterequestform'>
    <table padding = '5' border = '1'>
            <tr>
               <td>
                   <button name='button1' type='submit'> Request Date</button>
               </td>
            </tr>
            <tr>
               <td>
                   <button name='button2' type='submit'> Request Date</button>
               </td>
            </tr>
            <tr>
               <td>
                   <button name='button3' type='submit'> Request Date</button>
               </td>
            </tr>
    </table>
</form>

在 servlet 中,我尝试过 req.getAttribute("name") 或 req.getParameter("name") 但它们都返回 null。

我想做一些返回按钮名称的操作,例如:在本例中为 button1、button2 或 button3。

任何帮助将不胜感激!

亲切的问候

卢卡斯

【问题讨论】:

    标签: html servlets


    【解决方案1】:

    在您的按钮中包含一个“值”:

    <button name='button1' type='submit' value='first_one'> Request Date</button>
    
    <button name='button2' type='submit' value='second_one'> Request Date</button>
    

    等等。您将能够在 servlet 中按按钮获取此值。

    另请参阅W3Schools reference

    编辑: 我已经包含了一些适合我的代码:

    HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Button Test</title>
    </head>
    <body>
    <form method='POST' action='/buttonHandler' name='daterequestform'>
        <table padding = '5' border = '1'>
            <tr>
                <td>
                    <button name='button' type='submit' value="button1"> Request Date</button>
                </td>
            </tr>
            <tr>
                <td>
                    <button name='button' type='submit' value="button2"> Request Date</button>
                </td>
            </tr>
            <tr>
                <td>
                    <button name='button' type='submit' value="button3"> Request Date</button>
                </td>
            </tr>
        </table>
    </form>
    </body>
    </html>
    

    Java

    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet(urlPatterns = "/buttonHandler")
    public class ButtonHandler extends HttpServlet {
    
        @Override
        public void doPost(HttpServletRequest request, HttpServletResponse response) {
            System.out.println( "you pushed button " + request.getParameter("button"));
        }
    }
    

    【讨论】:

    • 谢谢!现在,当我在 servlet 端执行 req.getParameter("button1") 时,它返回请求日期,它是按钮上的标签,而不是分配给按钮的值。有什么想法吗?
    • 不要使用按钮标签,只需尝试使用以下标签 Request Date 请求日期
    • 还有你用的是什么浏览器?
    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 2013-07-31
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多