0

JSP ファイルに従業員のリストがあり、従業員ごとに、場所を更新するオプション (ドロップダウン) を提供しています。結果は、データの保存を処理する「SaveTubeDetails」サーブレットに渡されます。

現在使用しているコードは次のとおりです。

<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>

私の質問は、サーブレットに渡すことができる従業員のリストとして保存するにはどうすればよいですか?

注:私はSpringとHibernateを使用していません。また、スクリプトレットを使用すべきではないことはわかっていますが、既存のコードを更新しているため、選択の余地はありません。ここには従業員の場所の詳細しか表示されていませんが、実際には年齢、生年月日などの列が他にもあります。

4

1 に答える 1

3

あなたの特定の例では、送信されたすべての値はHttpServletRequest#getParameterValues()、入力が HTML マークアップに表示されるのとまったく同じ順序で、によって利用可能な文字列配列として存在します。

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

別の方法として、潜在的な競合状態を回避するために、入力名に従業員 ID を含めることを検討することをお勧めします (たとえば、フォームの表示とフォームの処理の間に別のエンドユーザーによって従業員が DB から削除された場合)。参加する):

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

次のように、従業員の既存のリストに基づいて、サーブレットで収集できます。

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

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