input type="radio" と そのlabelをセットにして繰り返すと良いでしょうか。
(ただしこの2つを囲う何らかの要素が必要です)
※ getメソッドを省略するため、lombokを利用しています。
java
1import lombok.Getter;
2
3@Getter
4public class Gender {
5 private String id;
6 private String value;
7 private String label;
8
9 Gender(String id, String value, String label) {
10 this.id = id;
11 this.value = value;
12 this.label = label;
13 }
14
15 public static Gender of(String id, String value, String label) {
16 return new Gender(id, value, label);
17 }
18}
java
1import java.util.ArrayList;
2import java.util.List;
3
4import org.springframework.stereotype.Controller;
5import org.springframework.web.bind.annotation.GetMapping;
6import org.springframework.web.bind.annotation.RequestMapping;
7import org.springframework.web.servlet.ModelAndView;
8
9@Controller
10@RequestMapping("radio")
11public class RadioController {
12 @GetMapping("")
13 public ModelAndView display(ModelAndView mnv) {
14
15 List<Gender> genders = new ArrayList<Gender>() {{
16 add(Gender.of("radioA", "male", "男性"));
17 add(Gender.of("radioB", "female", "女性"));
18 }};
19 mnv.addObject("genders", genders);
20
21 String gender = "female";
22 mnv.addObject("selectGender", gender);
23
24 mnv.setViewName("radio");
25 return mnv;
26 }
27
28}
29
選択したラジオボタンの値を selectGender、性別の一覧を genders とした場合のThymeleafテンプレートは、
html
1<!DOCTYPE html>
2<html xmlns:th="http://www.thymeleaf.org">
3<head>
4</head>
5<body>
6<form>
7 <div th:each="gender : ${genders}">
8 <input type="radio" name="gender" th:id="${gender.id}" th:value="${gender.value}" th:checked="${gender.value == selectGender}"/>
9 <label th:for="${gender.id}" th:text="${gender.label}"></label>
10 </div>
11</form>
12</body>
13</html>
になります。labelのforと、radioのidと合致させるため、Genderクラスにidを設定してその内容を表示させています。
これらを囲む <div>は適宜他の要素に書き換えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/26 12:02