前提・実現したいこと
Spring boot(thymeleaf)のお勉強中です。
コントローラでリストを作って、それを画面のth:eachでぐるぐるして表示させることをしたいのですが、肝心のth:eachの部分が画面表示されません。
th:each部分のソースが出力されていないことからループすらしていなそう。
エラーは発生していません。
ご助言のほどお願いいたします。
該当のソースコード
Controller.java
1// selectした結果をmodelに詰めるコントローラ 2 @RequestMapping(value = "/execute", method = RequestMethod.POST) 3 public String search(Model model, @ModelAttribute KbnlistForm kbnlistForm) { 4 List<Tm_kbn> kbnlist = tm_kbnMapper.select(kbnlistForm.getId()); 5 List<KbnForm> kbnFormList = new ArrayList<KbnForm>(); 6 for (Tm_kbn kbn : kbnlist) { 7 KbnForm kbnForm = new KbnForm(); 8 kbnForm.setValue(kbn.getValue()); 9 kbnForm.setName(kbn.getName()); 10 kbnFormList.add(kbnForm); 11 } 12 kbnlistForm.setKbnlist(kbnFormList); 13 model.addAttribute("kbnlistForm", kbnlistForm); 14 return "kbn"; 15 }
Screen.html
1<!-- コントローラで詰めた検索結果を表示する(したい)画面 --> 2<form th:action="@{/execute}" th:object="${kbnlistForm}" method="post"> 3 <label>id</label> 4 <input type="text" name="id" class="form-control" th:field="*{id}"> 5 <button type="submit" name="search">検索</button> 6 7 <!-- こっちは表示される(もちろんリストの先頭だけ) --> 8 <label>value</label> 9 <input type="text" name="kbnlist[0].value" class="form-control" th:field="*{kbnlist[0].value}"> 10 <label>name</label> 11 <input type="text" name="kbnlist[0].name" class="form-control" th:field="*{kbnlist[0].name}"> 12 13 <!-- こっちが表示されなくて悩んでいる… --> 14 <tr th:each="kbn:${kbnlist}"> 15 <td th:text="${kbn.value}">value</td> 16 <td th:text="${kbn.name}">name</td> 17 </tr> 18</form>
KbnForm.java
1//KbnForm.java 2 3import lombok.Data; 4 5@Data 6public class KbnForm { 7 String value; 8 String name; 9}
KbnlistForm.java
1//KbnlistForm.java 2 3import java.util.List; 4import lombok.Data; 5 6@Data 7public class KbnlistForm { 8 String id; 9 List<KbnForm> kbnlist; 10}
補足情報(FW/ツールのバージョンなど)
Spring boot 2.1.6, thymeleaf, mybatis
回答2件
あなたの回答
tips
プレビュー