【发布时间】:2020-07-13 03:11:28
【问题描述】:
我有一个像这样的 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";
}
我可以从下拉列表中列出角色,还可以成功分配其他值,例如名称和 ID。但是,当我尝试将下拉列表分配给 "*{role}" 时,它会中断..
我得到了例外:
default message [Failed to convert property value of type 'java.lang.String' to required type 'com.vipin.data.Role' for property 'role';
从异常中我看到它正在转换异常。我知道我可能可以分配一个角色 ID,然后再处理它,因为角色中有 2 个值(roleName 和 roleId),我如何直接分配角色对象?可能吗?是否有任何替代方法可以从单个下拉选择中分配角色(id 和 roleName)的两个值?
【问题讨论】:
标签: java html spring-boot spring-mvc thymeleaf