识别servlet中表单中按下了哪些按钮

时间:2012-09-16 00:26:50

标签: jsp servlets

在我的JSP中,我有一个表单(action =“myServlet”, method ='post',enctype ='multipart / form-data'),带有2个提交按钮。

我需要识别myServlet中按下了哪些按钮。 如果有可能我想避免使用会话...

关于如何做到这一点的任何想法?

编辑:------------------------------------------ -------------------------------
编辑后添加了以下所有文字。 文本也会随编辑一起添加。

现在我有3个按钮而不是2个,我必须为它们中的每一个添加一个javascript函数(onclick),这个函数在提交之前验证字段,所以我不得不修改按钮并设置type = button(它们是不再提交按钮,因为提交时他们会一直调用servlet,即使验证是错误的。)

我用来识别哪个提交按钮被点击的方法(在servlet中)迭代了随请求发送的所有FileItem,如果其中任何一个的名称是任何一个的名称在我的表单中有3个按钮,然后该按钮就是用户点击的按钮。当按钮具有type = submit时,这非常有效,但是现在它们是简单的按钮,显然它们不随请求一起发送,所以当我在servlet中获取FileItem时,它们都不是任何按钮......所以诀窍我之前使用的是没用的。

我不知道如何做到这一点,而不做奇怪的事情,例如:在表单中添加一个不可见的文本字段,其中填充了我点击的按钮的名称(使用javascript)...任何更好的想法?

2 个答案:

答案 0 :(得分:0)

为按钮指定名称


    <form action="MyServlet.do">
        <input type="submit" value="Submit 1" name="b1">
        <input type="submit" value="Submit 2" name="b2">
    </form>

然后在Servlet中


    HashMap<String, String[]> map = (HashMap<String, String[]>) request.getParameterMap();
    out.println(map.containsKey("b1"));
    out.println(map.containsKey("b2"));

点击的那个将被发送并返回true

答案 1 :(得分:0)

我不确定我是否正确地提出了您的问题。这就是我理解的 现在表单上的按钮不再是提交按钮了。所以你想知道哪个按钮 被点击了。好的,我可以建议你一个解决方案。您可以维护隐藏的输入类型以及何时 单击任何按钮,将其绑定到一个名为click的javascript函数。这里 是你应该编码的javascript函数的伪。

function click(){
 // step-1 get a list of all input type using getElementbyId function
 // step-2 check to which ones are buttons
 // step-3 now see whether names are equal to button one or two or three
 // step-4 base on which button was clicked set the value of hidden variable like button1,button2,button3
 // step-5 Retrieve the value of the hidden field in yourservlet and check which one was clicked.
 // step-6 submit the form
} 

我希望这有助于您的查询。 BR, 本