我正在尝试从具有多行的表中选择一行,并在另一个JSP中显示所选行的值。
但无论我选择哪一行,我都只得到第一行的值。从第一个JSP中选择的表数据将填充.js
文件。
以下是我的第一个JSP代码片段:
<div>
<form class="form-inline" name = "select_req" action="/Main.do" method = post>
<table class="table" id = "searchresult">
<tr>
<th>From</th>
<th>To</th>
<th>Airline</th>
<th>Fare</th>
<th>Action</th>
</tr>
<tr ng-repeat="flight in flights | filter:query">
<td><input value = "{{flight.from}}" name = "from"></td>
<td><input value = "{{flight.to}}" name = "to"></td>
<td><input value = "{{flight.airline}}" name = "airline"></td>
<td><input value = "{{flight.fare}}" name = "fare"></td>
<td><input type="submit" value="Select" name = "select_req" class="btn btn-success"/></td>
</tr>
</table>
<input type="hidden"/>
</form>
</div>
这是将其发送到另一个JSP的servlet代码:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String from = request.getParameter("from");
String to = request.getParameter("to");
String airline = request.getParameter("airline");
String fare = request.getParameter("fare");
HttpSession session = request.getSession();
session.setAttribute("from", from);
session.setAttribute("to", to);
session.setAttribute("airline", airline);
session.setAttribute("fare", fare);
request.getRequestDispatcher("/WEB-INF/views/Payment.jsp").forward(request, response);
}
最后,JSP是表中需要显示的选定行:
<table class = "table">
<tr>
<th>From</th>
<th>To</th>
<th>Airline</th>
<th>Fare</th>
</tr>
<tr>
<td><%= session.getAttribute("from") %></td>
<td><%= session.getAttribute("to") %></td>
<td><%= session.getAttribute("airline") %></td>
<td>$<%= session.getAttribute("fare") %></td>
</tr>
</table>
答案 0 :(得分:0)
表单元素包含所有表行的所有输入元素。提交表单时,它会将所有这些输入元素的值发送到服务器。
现在在服务器上所有参数都是多值的。如果你调用ServletRequest.getParameter(String)
,它将返回第一个值 - 它对应于第一个表行中的输入。
通过调用request.getParameterValues("from")
来检查它 - 它应该返回一个数组,其长度等于表中的行数,包含第一个表列的所有输入。
您可能想要的只是发送包含按下按钮的行的值。可以使用Javascript执行此操作,也可以将每个<tr>
包装在自己的<form>
元素中。