前提・実現したいこと
閲覧いただき、ありがとうございます。
Spring,MySQL,JDBCを使ってJAVA,jspの勉強をしている初心者です。
従業員マスタ(addressbook)の一覧表示、参照、更新、登録、削除機能を実装した
プログラムを作成しているのですが、所属の名称を
セレクトボックスにし、所属マスタ(department)の所属名(name)のみを
表示させたいのですが、現状、ハードコピーにあるように、
{cd=1,name=第一システム部}と表示されてしまい、
思い通りに動作しません。
どなたかご教示いただけないでしょうか。
↓更新画面
※所属マスタは所属コード(cd)と名称(name)しかもっていません。
発生している問題・エラーメッセージ
①セレクトボックスには名称(name)のみ表示したい。
②本来、所属コードが'3'(第三システム部)の社員にも
かかわらず、参照画面や更新画面を表示すると、
無条件で先頭のデータ{cd=1,name=第一システム部}が
表示されてしまう。
③リストボックスには所属名を表示したいが、従業員マスタ
(addressbook)の所属情報には対応するコードを設定したい。
該当のソースコード
java
1(Controller.java) 2 private RecordManager recordManager; 3 private DepartmentInfoGet departmentInfoGet; 4 public AddressBookController(RecordManager recordManager,DepartmentInfoGet departmentInfoGet) { 5 this.recordManager = recordManager; 6 this.departmentInfoGet = departmentInfoGet; 7 } 8 @RequestMapping(value = "/start") 9 public String init(AddressBookForm form, Model model) { 10 model.addAttribute("message", INIMSG); 11 return INIT; 12 } 13 @RequestMapping(params = "update") //更新画面表示 14 public String update(@Valid AddressBookForm form, BindingResult result, Model model) { 15 if (result.hasErrors()) { 16 return INIT; 17 } 18 List<Map<String, Object>> departmentList = departmentInfoGet.getDepartmentList(); 19 model.addAttribute("departmentList", departmentList); 20 21 Employee employee = recordManager.selectEmployee(form.getId()); 22 if (employee != null) { 23 form.setName(employee.getName()); 24 form.setPhone(employee.getPhone()); 25 form.setAddress(employee.getAddress()); 26 form.setSex(employee.getSex()); 27 form.setDepartment(employee.getDepartment()); 28 model.addAttribute("message", UPDMSG); 29 return UPDATE; 30 } else { 31 model.addAttribute("message", ERRMSG); 32 return INIT; 33 } 34 } 35 @RequestMapping(params = "reflection") //反映ボタン押下時 36 public String reflection(@Valid AddressBookForm form, BindingResult result, Model model) { 37 if (result.hasErrors()) { 38 return UPDATE; 39 } 40form.getAddress()); 41 Integer rs = recordManager.updateEmployee(form.getId(), form.getName(), form.getPhone(), form.getAddress(), form.getSex(), form.getDepartment()); 42 if (rs == 1) { 43 model.addAttribute("message", UPDMSG2); 44 return INIT; 45 } else { 46 model.addAttribute("message", ERRMSG2); 47 return INIT; 48 } 49 }
java
1(DepartmentInfoGet.java) 2public class DepartmentInfoGet { 3 private JdbcTemplate jdbcTemplate; 4 public DepartmentInfoGet(JdbcTemplate jdbcTemplate) { 5 this.jdbcTemplate = jdbcTemplate; 6 } 7 public List<Map<String, Object>> getDepartmentList() { 8 List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from unit02.department order by cd"); 9 return list; 10 } 11}
jsp
1(update.jsp) 2<body> 3 <form:form modelAttribute="addressBookForm" action="/address/book"> 4 <div class="header"> 5 <span class="titleName">住所録</span> 6 <div class="date"><%=LocalDate.now()%></div> 7 </div> 8 <div class="main"> 9 <div class="message"> 10 <c:out value="${message}" /> 11 <form:errors path="name" /> 12 <form:errors path="phone" /> 13 <form:errors path="address" /> 14 </div> 15 <div> 16 <span class="itemName">従業員番号:</span> 17 <c:out value="${addressBookForm.id}" /> 18 <form:hidden path="id" /> 19 </div> 20 <div> 21 <span class="itemName">所属:</span> 22 <form:select path="department" items="${departmentList}" /> 23 </div> 24 <div> 25 <span class="itemName">名前:</span> 26 <form:input path="name" size="31" /> 27 </div> 28 <div> 29 <span class="itemName">電話番号:</span> 30 <form:input path="phone" size="31" /> 31 </div> 32 <div> 33 <span class="itemName">住所:</span> 34 <form:input path="address" size="31" /> 35 </div> 36 <div> 37 <span class="itemName">性別:</span> 38 <form:radiobutton path="sex" label="男" value="0"/> 39 <form:radiobutton path="sex" label="女" value="1"/> 40 </div> 41 </div> 42 <div class="footer"> 43 <div> 44 <input type="submit" name="reflection" value="反映" /> 45 </div> 46 <div> 47 <input type="submit" name="toInit" value="取消" /> 48 </div> 49 </div> 50 </form:form> 51</body>
試したこと
①DepartmentInfoGet.javaのSELECT文を*ではなく、nameで取得すると、
セレクトボックスの表示が{name=第一システム部}に変わるだけで
正しく表示されないことには変わりがありませんでした。
②どう試していいのかわからず何もできていません。
③どう試していいのかわからず何もできていません。
回答1件
あなたの回答
tips
プレビュー