我的JSP文件中有一个Employees列表,对于每个员工,我提供了一个更新位置的选项(下拉列表)。结果传递给“SaveTubeDetails”servlet,它负责保存数据。
这是我目前正在使用的代码:
<form action="SaveTubeDetails" method="POST">
<table>
<%
for(Iterator<Employee> itr = employeeArr.iterator(); itr.hasNext();){
Employee emp= itr.next();
%>
<tr>
<td>
<select name="location">
<% for(int count=0; count<locArr.size(); count++){ %>
<option value="<%= locArr.get(count) %>" ><%= locArr.get(count) %></option>
<%} %>
</select>
</td>
</tr>
</table>
</form>
我的问题是,如何将其保存为可以传递给Servlet的员工列表?
注意:我没有使用Spring和Hibernate。而且我知道不会使用scriptlet,但是由于我正在更新现有代码,所以我别无选择。虽然这里只显示了Employee的Location详细信息,但实际上还有更多列,如Age,DOB等。
答案 0 :(得分:3)
在您的特定示例中,所有提交的值都是HttpServletRequest#getParameterValues()
提供的字符串数组,其顺序与HTML标记中显示的输入完全相同。
String[] location = request.getParameterValues("location");
// ...
作为替代方案,您可能需要考虑在输入名称中包含员工ID,以便避免任何潜在的竞争条件(例如,当一个员工在显示表单和之间由不同的最终用户从DB中删除时处理表格提交):
<select name="location_<%=emp.getId()%>">
然后可以基于现有员工列表在servlet中收集,如下所示:
List<Employee> employees = employeeService.list();
for (Employee employee : employees) {
String location = request.getParameter("location_" + employee.getId());
// ...
}