首页 > 解决方案 > 无法在 thymeleaf 页面中打印与用户关联的角色

问题描述

我是spring boot的新手,有人可以帮忙吗!

我有一个显示设置页面的控制器。

@GetMapping("/setting")
public String settings(Model model){
    List<User> user =  userDao.findAll();
    model.addAttribute("user", user);
    return "settings";
}

我的查询

 @Query(value = "SELECT * FROM users u left join user_role ur on u.id = ur.user_id",nativeQuery=true)

 List<User> findAll();

在渲染时,设置页面如下所示。

在此处输入图像描述

我需要显示用户角色,如(管理员/版主等)以及角色 ID

用户与角色的映射是多对多的。

    @ManyToMany(cascade=CascadeType.MERGE)
    @JoinTable(
          name="user_role",
          joinColumns={@JoinColumn(name="USER_ID", referencedColumnName="ID")},
          inverseJoinColumns={@JoinColumn(name="ROLE_ID", referencedColumnName="ID")})
    private List<Role> roles;

在设置页面中,我无法获取角色的值。

           <tbody>
                <tr th:each="u,iterator : ${user}">
                    <!-- <td th:text="${u.id}"></td> -->
                    <td th:text="${iterator.index+1}"></td>
                    <td th:text="${u.name}"></td>  
                     <td th:if="${u.isActive}"><span class="status text-success">&bull;</span> Active</td>
                    <td th:unless="${u.isActive}"><span class="status text-warning">&bull;</span> InActive</td>                     
                    <td>****need to get role here***</td>
                </tr>
           </tbody>

标签: springspring-bootthymeleaf

解决方案


我会做这样的事情:

 <td><span th:each="role : ${u.roles}" th:text="${role.name}+' '"></span></td>

根据 Role 类,您有一个 name 字段。

最后的空格只是一个分隔符,以防您有多个角色。


推荐阅读