当前位置: 首页 > 知识库问答 >
问题:

在Servlet中按下了哪个动态创建按钮

梅飞宇
2023-03-14

我动态创建了按钮。

<form action="/" method="post">
    <table cellpadding="4">
        <%
            List<Room> rl = (List<Room>) request.getAttribute("roomList");
            if(rl != null) {
                for (Room r : rl) {
                    String name = r.getName();
        %>
            <tr>
                <td><%=name%></td>
                <td><input type="submit" value="Add a Booking" name=<%=name%> /></td>
            </tr>
        <%
                }
            }
   %>
   </table>

我知道用以下代码单击了哪个按钮;

String addButton = req.getParameter("addButton");

然而,在这种情况下,我无法知道按钮的名称。因为按钮的名字可以是任何东西。我怎么知道按下了哪个按钮?提前感谢!

共有2个答案

谢泉
2023-03-14

您需要执行以下操作:

公羊信厚
2023-03-14

您可能至少有两种解决方案:

1.JavaJSP中服务器端代码
中的解决方案,每个提交按钮都将以submit_前缀命名

<input type="submit" value="Add a Booking" name=<%="submit_"+name%> />

当请求发送到服务器时,您将循环参数并搜索带有此前缀的参数,将其值保存到<code>submit</code>属性:

private void setSubmitValue(HttpServletRequest request) {
  String SUBMIT_PREFIX = "submit_";
  for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
    String key = (String) e.nextElement();
    if (key.startsWith(SUBMIT_PREFIX)) {
      String value = key.substring(SUBMIT_PREFIX.length());
      request.setAttribute("submit", value);
      break;
    }
  }
}

2.解决方案在客户端(浏览器)侧使用JavaScript
,以新的隐藏小部件的形式引入,该小部件将保存单击的房间数。单击按钮时,其值将存储在该微件中。
发送请求时,在服务器端,您只需读取该参数的值(小部件名称)。
下面是一个示例:room-nr 将具有单击按钮的值

var form = document.forms['add-room'];
$(form).on('click', 'button', function(e) {
  e.preventDefault();
  var name = $(this).attr('name')
  form['room-nr'].value = name.replace(/\D+/, '');
  console.log(form['room-nr'].value);
  //form['add-booking'].click();
});
.hide {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form name="add-room" action='.'">
  <input type="hidden" name="room-nr" value="" />
  <table cellpadding="4">
    <tr>
      <td>room1</td>
      <td>
        <button type="button" name="room-1">Add</button>
      </td>
    </tr>
    <tr>
      <td>room2</td>
      <td>
        <button type="button" name="room-2">Add</button>
      </td>
    </tr>
    <tr>
      <td>room3</td>
      <td>
        <button type="button" name="room3">Add</button>
      </td>
    </tr>
  </table>
  <input type="submit" value="Add a Booking" name="add-booking" class="hide" />
</form>
 类似资料:
  • 我知道以前可能有人问过这个问题,但我似乎找不到适合我情况的合理答案。 我有一个表单,表单中有多个提交按钮,我需要知道按下了哪个按钮。 表单内部的一个小代码段可能如下所示: fmt:消息部分只是考虑了客户端的语言并将单词放在按钮上。 到目前为止,我在submit按钮上添加了一个动作处理程序,并在表单上添加了一个隐藏的input元素,告诉我哪个按钮被按下了,但是我需要在不依赖javascript的情况

  • 我试图构建一个GUI,它有许多按钮(JButton)/下拉项(JMenuItem),当按下每个包含字母的按钮时,相关的字母将添加到标签中。 我无法识别按下了哪个按钮。你能给我一个关于如何做到这一点的提示吗?

  • 我是Java /JavaFX的新手(昨天晚上开始)。我正在构建一个动态GUI(crud)读取MySQL数据库。 我设法在表中显示数据并在每一行旁边添加一个按钮。 由于按钮的数量是可变的,我只想定义一个通用的均衡器。 问题是每当我使用event.getSource()(它是一个ActionEvent)并显示它时,我都会得到类似“Button[id=0, styleClass=按钮”的东西。 问题1:

  • 我想知道在多个按钮的列表中按下了哪个按钮。例如,如果按下了第二个按钮,则代码会检测到按下第二个向下的按钮,并返回类似于 。但是,我不知道该怎么做。当我搜索时,jQuery参与其中,但我没有使用jQuery。代码如下: 我尝试使用EventListner,通过将EventListner添加到创建的每个按钮,但这并不能区分单个按钮。请注意,每个按钮都有一个id为和一个类。 如果有人能帮忙,谢谢!

  • 问题内容: 我有一个包含多个链接的页面,可将用户重定向到其他页面。我以为使用表单会更好,所以我定义了一个带有Multiple的WTForms 。如何确定单击了哪个按钮并基于该按钮重定向? 问题答案: 您在表单中添加了两个按钮,因此请检查哪个字段的数据是。

  • 我有一个二维数组(矩阵),尺寸为50x50。在这些矩阵中,每个位置的值为 0 或 1。此矩阵由具有 50x50 按钮的网格布局呈现,如果值为 0 或 1,则这些按钮为白色或黑色。如果我按下一个按钮,矩阵中的相关位置应该将值更改为1。为了实现这一点,我为每个矩阵位置创建了一个按钮的网格,由for循环执行。我还为此 for 循环中的每个按钮实现了一个 ActionListener。我尝试使用 Acti