0

我的 JSP 文件中有一个员工列表,对于每个员工,我提供了一个更新位置的选项(下拉菜单)。结果被传递到“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 等。

4

1 回答 1

3

在您的特定示例中,所有提交的值都作为可用的字符串数组HttpServletRequest#getParameterValues(),其顺序与输入出现在 HTML 标记中的顺序完全相同。

String[] location = request.getParameterValues("location");
// ...

作为替代方案,您可能需要考虑在输入名称中包含员工 ID,以避免任何潜在的竞争条件(例如,在显示表单和处理表单之间,员工已被不同的最终用户从数据库中删除时)提交):

<select name="location_<%=emp.getId()%>">

然后可以根据现有的员工列表将其收集到 servlet 中,如下所示:

List<Employee> employees = employeeService.list();

for (Employee employee : employees) {
    String location = request.getParameter("location_" + employee.getId());
    // ...
}
于 2012-04-16T15:43:12.770 回答