Thymeleafを使用したSpringMVCのコントローラーでコンボボックスの値を選択するにはどうすればよいですか?

Dec 20 2020

ビューには次のコードがあります。

<input type="text" name="person" th:value="${person}"> <select name="gender" id="gender" th:value="${gender}">
    <option value="Male">Male</option>
    <option value="Female">Female</option>   
</select>

コントローラ

modelAndView.addObject("person", "Nancy");
modelAndView.addObject("gender", "Female");

これを実行すると、人物フィールドに「ナンシー」が正しく表示されます。ただし、コンボボックスには女性ではなく男性が表示されます。正しい値を表示させるにはどうすればよいですか?

回答

1 andrewjames Dec 20 2020 at 05:12

selected最初の表示が正しいことを確認するには、Thymeleafを使用して各オプションの属性を処理する必要があります。

<select name="gender" id="gender" th:value="${gender}"> <option value="Male" th:selected="${gender} == 'Male'">Male</option>
    <option value="Female" th:selected="${gender} == 'Female'">Female</option>   
</select>

これにより、次のHTMLが生成されます。

<select name="gender" id="gender" value="Female">
    <option value="Male">Male</option>
    <option value="Female" selected="selected">Female</option>   
</select>

selected属性は、HTML論理属性です-これらのためのThymeleafのドキュメントがあるここに。