我已经动态创建了按钮。
<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");
但是,在这种情况下,我无法知道按钮的名称。因为按钮的名称可以是任何东西。我怎么知道按下了哪个按钮?提前谢谢!
答案 0 :(得分:1)
您可能至少有两种解决方案:
<强> 1。服务器端的Java代码解决方案
在JSP中,每个提交按钮都将以submit_
前缀
<input type="submit" value="Add a Booking" name=<%="submit_"+name%> />
当请求发送到服务器时,您将循环参数并搜索具有此前缀的参数,并将其值保存为submit
属性:
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>
答案 1 :(得分:0)
您需要执行以下操作:
&lt; input type =“submit”value =“&lt;%name%&gt;” name =“添加预订” /&GT;