У меня есть такой класс pojo
pulic class Role{
private int roleId;
private String roleName;
//default getters setters and constructors
Другой пользователь класса POJO
public class User{
private String id;
private String name;
private Role role;
// standard getters setters and constructors
Мой метод класса контроллера для вызова страницы
@GetMapping("/adduser")
public String registerUserPage(Model model){
model.addAttribute("roles",roles.listRoles());
User user = new User();
user.setRole(new Role());
model.addAttribute("user",user);
return "adduser";
}
adduser . html
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org"
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form name="registerForm" th:action="@{/createUser}" th:object="${user}" method="POST">
<div><label> First Name : <input type="text" th:field="*{name}"/> </label></div>
<div><label> Id : <input type="text" th:field="*{id}"/> </label></div>
<select th:field="*{role}">
<option value="">Select Test Order</option>
<option th:each="role : ${roles}"
th:value="${role}"
th:text="${role.roleName}"></option>
</select>
<div><input type="submit" value="Add"/></div>
</form>
</body>
</html>
И контроллер createUser
@PostMapping("/createUser")
public String registerUser(@ModelAttribute("user") User user, Model model){
System.out.println(digiUser.getName); //this works
System.out.println(digiUser.getRole().getRoleName()); //how??
return "ok";
}
Я могу перечислять роли из выпадающего списка, а также успешно назначать другие значения, такие как имя и идентификатор. Однако, когда я попытался назначить выпадающий список "*{role}"
, он сломался ..
я получил исключение:
default message [Failed to convert property value of type 'java.lang.String' to required type 'com.vipin.data.Role' for property 'role';
Из исключения я вижу, что это исключение приведения. Я знаю, что, возможно, смогу назначить идентификатор роли и позже обработать его, так как в роли есть 2 значения (roleName и roleId), как я могу назначить объект роли напрямую? Является ли это возможным? Какие-либо альтернативные подходы для назначения обоих значений роли (id и roleName) формы одиночного выпадающего выбора?