【问题标题】:Recognize which of the buttons was pressed in the form from the servlet从 servlet 识别表单中按下了哪些按钮
【发布时间】:2012-09-08 17:45:50
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    为您的按钮命名

    然后在 Servlet 中

    HashMap map = (HashMap) request.getParameterMap(); out.println(map.containsKey("b1")); out.println(map.containsKey("b2"));

    被点击的会被发送并返回true

    【讨论】:

    • 致新人:这个答案是在编辑之前发布的,现在我遇到的问题不同了。
    【解决方案2】:

    我不确定我是否正确地回答了您的问题。这就是我的理解 现在表单上的按钮不再是提交按钮了。所以你想知道哪个按钮 被点击。好的,我可以建议你一个解决方案。您可以维护隐藏的输入类型以及何时 您单击任何按钮,将其绑定到称为 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, 本

    【讨论】:

    • 感谢您的帮助,但这正是我所说的我宁愿避免做的事情:“我不知道如何在不做奇怪的事情的情况下做到这一点,例如:在表单中添加一个不可见的文本字段里面充满了我单击的按钮的名称(使用 javascript)......有更好的想法吗?”。我不想这样做,因为它看起来不自然,也许有很好的解决方案。如果没有其他解决方案,那么我将实现那个不可见的输入。
    • 这是一个相当普遍的逻辑。你可以通过添加switch语句来改进它。另一种方法是当您单击时,发送附加到链接的附加参数。这个参数会告诉你点击了哪个按钮。但是这个解决方案与之前的解决方案相似。如果有人提供更好的解决方案,我也在等待。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2017-09-14
    • 2012-05-23
    • 2018-05-15
    相关资源
    最近更新 更多