0

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

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

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

编辑: - - - - - - - - - - - - - - - - - - - - - - - - -------------------------
下面的所有文字都是在编辑后添加的。文本也与编辑一起添加。

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

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

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

4

2 回答 2

0

为您的按钮指定名称

    <form action="MyServlet.do">
        <input type="submit" value="提交 1" name="b1">
        <input type="submit" value="提交 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

于 2012-09-16T01:26:32.230 回答
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,本

于 2012-09-17T09:22:36.347 回答