0

ここにトリッキーな問題があります。次の jspx があります。

<form:form modelAttribute="employee" id="employeeUpdateForm" method="post">
    <form:select path="departmentId">           
    <form:options items="${departments}" />
</form:select>

<button type="submit">Save</button>
    <button type="reset">Reset</button>
</form:form>

そして私のupdateFormメソッド:

@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.GET) 
public String updateForm(@PathVariable ("id") Long id, Model uiModel) { 
uiModel.addAttribute("employee", employeeService.findById(id));

List<Department> departments = employeeService.getAllDepartments();
uiModel.addAttribute("department", departments);

return "staff/update";
}

「部門」には、部門 ID (int) と部門名 (文字列) の 2 つのフィールドがあります。

したがって、「employee」と「department」は 2 つの異なるオブジェクトです。「employee」(departmentId) に関連するフィールドに「department」の文字列表現を入力できるようにしたいと考えています。彼らの departmentId は互いに一致します。特定の部門が選択されると、その ID が employee.departmentId に設定されます。

前もって感謝します!

4

1 に答える 1

3

updateForm メソッドがコントローラーで何をするのかよくわかりませんでした。それが初期フォームをロードするものである場合、モデル属性名departmentsdepartment. これらは updateForm メソッドの変更点です。departmentId を値として、divisionName をキーとしてハッシュ マップを取るエントリ セットを作成しました。

 Set<Map.Entry<String, String>> departments;
 uiModel.addAttribute("employee", employeeService.findById(id));
 List<Department> departmentsList = employeeService.getAllDepartments();
 final Map<String, String> departmentsMap = new HashMap<String, String>();
 if( departmentsList != null && !departmentsList.isEmpty()){
     for(Department eachDepartment : departmentsList ){
         if(eachDepartment != null){
            departmentsMap.put(eachDepartment.getDivisionName(), eachDepartment.getDepartmentId());
        }
     }
  }
  departments = departmentsMap.entrySet(); 
  uiModel.addAttribute("departments", departments);

これを jsp に表示します。

 <form:form modelAttribute="employee" id="employeeUpdateForm" method="post">
  <form:select path="departmentId">         
    <form:options items="${departments}" var="department" itemValue="value" itemLabel="key"/>
  </form:select> 
 <button type="submit">Save</button>
 <button type="reset">Reset</button>
</form:form>

valueとは、コントローラーに入力されるkeyのキーと値のペアに対応します。departmentsMap値は departmentId にバインドされ、divisionName がドロップダウンに表示されます。

これがあなたの望むものであることを願っています。

于 2013-06-12T17:56:53.787 に答える