【機能概要】
チェックボックスで選択したオブジェクトの情報を表示する機能を作成しています。
チェックボックスの値はカテゴリーわけをしており、
Map<String カテゴリ名, List<String 選択肢名>>
で表現しています。
※ちょっとわかりずらいんですが
カテゴリ名:category
選択肢名:genre
で命名しています。
Mapはコントローラーでmodelに登録し、ビューではthymeleafで呼び出します。
『検索』ボタンをクリックするとformの値が送信されオブジェクトを検索(検索部分は割愛)コントローラーで自身のページに該当するオブジェクトの内容を表示するというものです。
【課題】
formで送信された値は自身のページにreturnするのですが、その時にマップを再利用したいので、ビューから
<input type="hidden" name="attrName" th:value="${mapObj}">
を送信し、コントローラーでは
@RequestParam(name="attrName") Map<String, List<String>> mapObj
で取得、再度マッピングしようとしています。
ですがここでmapObjがStringとして認識される?ようでエラーになってしまいます。
err
1java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Map': no matching editors or conversion strategy found
thymeleafではviewからmapオブジェクトを送信することはできないのでしょうか?
【コード】
■コントローラー
Java
1@Controller 2@RequestMapping("/genre") 3public class GenreController { 4 5 @Autowired 6 GenreService genreService; 7 8 @GetMapping("") 9 public String genre(Model model) { 10 11 model.addAttribute("genreNamesOfCategories", genreService.getGenreNamesOfCategories(model)); 12 //Map<String カテゴリ名, List<String 選択肢名>> を取得 13 14 return "genre/index"; 15 } 16 17 @GetMapping("/search") //検索ボタンが押されたら 18 public String searchGenre(Model model, @RequestParam(name="genreNamesOfCategories") Map<String, List<String>> genreNamesOfCategories) { 19 20 model.addAttribute("genreNamesOfCategories", genreNamesOfCategories); 21 return "genre/index"; 22 } 23 24 …… 25
■ビュー
HTML
1<form action="/genre/search" method="get"> 2 <input type="hidden" name="genreNamesOfCategories" th:value="${genreNamesOfCategories}"> 3 4 <table class="table"> 5 <tr th:each="genres : ${genreNamesOfCategories.get('category1')}"> 6 <td th:text="${genres}"></td> 7 <td><input type="checkbox" name="genreNameaa" th:value="${genres}"></td> 8 </table> 9 10 <table class="table"> 11 <tr th:each="genres : ${genreNamesOfCategories.get('category2')}"> 12 <td th:text="${genres}"></td> 13 <td><input type="checkbox" name="genreNameaa" th:value="${genres}"></td> 14 </table> 15 16 …… 17
回答1件
あなたの回答
tips
プレビュー