在我的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)...任何更好的想法?
答案 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, 本