У меня есть следующий класс:
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "person_id")
private int personId;
@Column(name = "person_name", unique = true)
private String personName;
@Column(name = "gender")
private Gender personGender;
}
А вот и пол:
public class Gender{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "gender_id")
private int genderId;
@Column(name = "gender_name", unique = true)
private String genderName;
}
Я создал выпадающее меню Thymelef при создании нового персонажа, который выглядит следующим образом:
@RequestMapping(value = ("/newPerson"), method = RequestMethod.GET)
public ModelAndView createPerson() {
ModelAndView model = new ModelAndView();
Person person= new Person ();
model.addObject("person", person);
List<Gender> genders= genderService.getAll();
model.addObject("genders", genders);
model.setViewName("user/newPerson");
return model;
}
(Я понимаю, что это выглядит глупо, но это упрощенная версия моего кода.)
А вот и HTML:
<form class="form-createNew" role="form" method="POST"
th:action="@{/newPerson}" th:object="${person}">
<div class="form-row">
<div class="col">
<div class="form-label-group">
<input type="text" th:field="*{personName}" id="personName" class="form-control" placeholder="Person name">
</div>
</div>
</div>
<div class="form-row">
<div class="col">
<div class="form-label-group">
<select th:field="*{personGender}" class="form-control"
id="personGender" name="personGender">
<option value="" selected disabled hidden>Select gender</option>
<option th:each="gender: ${genders}"
th:value="${gender.genderId}"
th:text="${gender.genderName}"></option>
</select>
</div>
</div>
</div>
<button id="registerBtn" class="btn btn-lg btn-primary btn-block shadow-none text-uppercase" type="submit"> Create </button>
</form>
И, наконец, мой вопрос:
То, что я получаю методом POST в контроллере для / newPerson, это объект Person со значением из поля ввода, но NULL для рода. Что вызывает это и где я здесь не прав? Я проходил подобные вопросы на SO в отношении этой проблемы, а также на Thymeleaf Docs / Baeldung, и все выглядит хорошо для меня.
Любая помощь приветствуется! :)