spring framework4を使ってウェブアプリを作っています。バリデーション機能を使用し、未入力欄があればエラーメッセージが出るようにしている。submitボタンを押したときにjspタグのforeach機能で回したら、リストアイテムが消えてしまった。
コントローラクラス
Java
1… 2 @RequestMapping(value = { "/userCreate" }, method = RequestMethod.GET) 3 public String create(Model model) { 4 5 List<MinutesKind> minutesKindList = minutesKindService.findAllRow(); 6 User user = new User(); 7//c:forEachで使用するリストをここでターゲットモデルクラスにセット 8 user.setMinutesKindList(minutesKindList); 9 model.addAttribute(user); 10 return "userCreate"; 11 } 12 13 @RequestMapping(value = "/userCreate", method = RequestMethod.POST) 14 public String docreate(@ModelAttribute @Validated User user, Model model, BindingResult bindingResult, 15 final RedirectAttributes redirectAttributeValue) { 16 userCreateValidator.validate(user, bindingResult); 17 if (bindingResult.hasErrors()) { 18 return "userCreate"; 19 } 20 return "redirect:userList"; 21 } 22…
Jspファイル
Jsp
1<form:form method="POST" modelAttribute="user" style="width:50%;"> 2 <table class="table table-bordered"> 3 <tr> 4 <td colspan="5"> 5 <h5 class="form-signin-heading" align="center">議事録種類権限編集</h5> 6 </td> 7 </tr> 8 <tr> 9 <th>ID</th> 10 <th>議事録種類名</th> 11 <th>なし</th> 12 <th>回覧</th> 13 <th>承認</th> 14 </tr> 15 <c:forEach var="kind" items="${user.minutesKindList}"> 16 <c:if test="${kind.isDeleted != true}"> 17 <tr> 18 <td>${kind.id}</td> 19 <td>${kind.kindName}</td> 20 <td><form:radiobutton 21 path="authorityList[${kind.id - 1}].authority" value="1" /></td> 22 <td><form:radiobutton 23 path="authorityList[${kind.id - 1}].authority" value="2" /></td> 24 <td><form:radiobutton 25 path="authorityList[${kind.id - 1}].authority" value="3" /></td> 26 27 </tr> 28 </c:if> 29 <c:if test="${kind.id == null || kind.isDeleted == true}"> 30 <tr align="center"> 31 <td colspan=5>データは登録されていません。</td> 32 </tr> 33 </c:if> 34 </c:forEach> 35 </table> 36</form:form>
Jspのソースでラジオボタンの項目が未選択だった場合、バリデーション機能で未選択のエラーメッセージを出すようにしていますが、submitボタン押下時にc:forEachのリストアイテムがすべて消えてしまいます。おそらく、modelAttributeのターゲットモデルクラスでセットしたプロパティがリセットされてNULLになったかと思われます。c:forEachのリストアイテムがどうすれば失われずに済むのかわかる方教えてください。
回答1件
あなたの回答
tips
プレビュー