spring 靴子和百里香叶
spring boot and thymeleaf
我需要有关 spring enter image description hereboot 和 thymeleaf 的帮助,因为它没有向我显示用户角色
因为它显示的是这些信息而不是角色
这是我的数据库
enter image description here
我的控制器
@GetMapping("/listar")
public String listar(Model model) {
List<User> listUsers= userService.findAll();
if(listUsers !=null) {
model.addAttribute("titulo", "Lista de usuarios y roles");
model.addAttribute("listUsers", listUsers);
return "user/listar";
}
return "redirect:/escuela/";
}
我的HTML
<tr th:each="user: ${listUsers}">
<td th:text="${user.nombre}"></td>
<td th:text="${user.aPaterno}"></td>
<td th:text="${user.aMaterno}"></td>
<td th:text="${user.curp}">]</td>
<td th:text="${user.puesto}"></td>
<td th:text="${user.email}"></td>
<td th:text="${user.roles}"></td>
</tr>
我的实体
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Size(min = 2, max = 20)
@NotBlank
private String nombre;
@Size(min = 2, max = 20)
@NotBlank
private String aPaterno;
@Size(min = 2, max = 20)
@NotBlank
private String aMaterno;
@Size(min = 18, max = 18)
@Column(length = 18, nullable = false, unique = true)
private String curp;
@Size(min = 2, max = 20)
@NotBlank
private String puesto;
@Email
@Column(length = 45, nullable = false, unique = true)
private String email;
@Size(min = 2, max = 20)
@Column(length = 20, nullable = false)
@NotBlank
private String password;
@Valid
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<Role>();
getters 和 setters.....
我没有太多spring开机经验,谁能帮帮我
你得到这个是因为 ${user.roles}
是一个列表,所以显示的是这个列表的(因此是 Role
的)默认 toString()
方法,
您需要在 user.roles
中循环并打印,例如,如下所示的角色名称:
<tr th:each="user: ${listUsers}">
<td th:text="${user.nombre}"></td>
<td th:text="${user.aPaterno}"></td>
<td th:text="${user.aMaterno}"></td>
<td th:text="${user.curp}">]</td>
<td th:text="${user.puesto}"></td>
<td th:text="${user.email}"></td>
<td>
<table>
<tr th:each="role: ${user.roles}">
<td th:text="${role.name}"></td>
</tr>
</table>
</td>
</tr>
为了同谋,您还可以覆盖 Role
class 中的 toString()
方法,让您的 HTML 保持原样,即
<td th:text="${user.roles}"></td>
由于您还没有发布角色 class 下面是对它可能是什么的“猜测”,toString()
方法被覆盖以显示 name
字段。
角色 class
@Entity
public class Role {
private String name;
// rest of properties
// getters and setters
@Override
public String toString() {
return this.name;
}
}
我需要有关 spring enter image description hereboot 和 thymeleaf 的帮助,因为它没有向我显示用户角色
因为它显示的是这些信息而不是角色
这是我的数据库
enter image description here
我的控制器
@GetMapping("/listar")
public String listar(Model model) {
List<User> listUsers= userService.findAll();
if(listUsers !=null) {
model.addAttribute("titulo", "Lista de usuarios y roles");
model.addAttribute("listUsers", listUsers);
return "user/listar";
}
return "redirect:/escuela/";
}
我的HTML
<tr th:each="user: ${listUsers}">
<td th:text="${user.nombre}"></td>
<td th:text="${user.aPaterno}"></td>
<td th:text="${user.aMaterno}"></td>
<td th:text="${user.curp}">]</td>
<td th:text="${user.puesto}"></td>
<td th:text="${user.email}"></td>
<td th:text="${user.roles}"></td>
</tr>
我的实体
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Size(min = 2, max = 20)
@NotBlank
private String nombre;
@Size(min = 2, max = 20)
@NotBlank
private String aPaterno;
@Size(min = 2, max = 20)
@NotBlank
private String aMaterno;
@Size(min = 18, max = 18)
@Column(length = 18, nullable = false, unique = true)
private String curp;
@Size(min = 2, max = 20)
@NotBlank
private String puesto;
@Email
@Column(length = 45, nullable = false, unique = true)
private String email;
@Size(min = 2, max = 20)
@Column(length = 20, nullable = false)
@NotBlank
private String password;
@Valid
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<Role>();
getters 和 setters.....
我没有太多spring开机经验,谁能帮帮我
你得到这个是因为 ${user.roles}
是一个列表,所以显示的是这个列表的(因此是 Role
的)默认 toString()
方法,
您需要在 user.roles
中循环并打印,例如,如下所示的角色名称:
<tr th:each="user: ${listUsers}">
<td th:text="${user.nombre}"></td>
<td th:text="${user.aPaterno}"></td>
<td th:text="${user.aMaterno}"></td>
<td th:text="${user.curp}">]</td>
<td th:text="${user.puesto}"></td>
<td th:text="${user.email}"></td>
<td>
<table>
<tr th:each="role: ${user.roles}">
<td th:text="${role.name}"></td>
</tr>
</table>
</td>
</tr>
为了同谋,您还可以覆盖 Role
class 中的 toString()
方法,让您的 HTML 保持原样,即
<td th:text="${user.roles}"></td>
由于您还没有发布角色 class 下面是对它可能是什么的“猜测”,toString()
方法被覆盖以显示 name
字段。
角色 class
@Entity
public class Role {
private String name;
// rest of properties
// getters and setters
@Override
public String toString() {
return this.name;
}
}