当前位置: 代码迷 >> java >> Thymeleaf多对多复选框
  详细解决方案

Thymeleaf多对多复选框

热度:76   发布时间:2023-07-25 19:30:33.0

我正在将应用程序从JSP移植到Thymeleaf。 到目前为止,我已经找到了等效于我在JSP EXCEPT中所做的所有工作。 我有一个角色实体,它与许可实体具有多对多关系,这可能是一个非常典型的设置。 在JSP中,我曾经能够编辑角色并将每个权限映射到一个复选框,如下所示:

<form:checkboxes element="li" items="${systemPermissions}" path="permissions" itemValue="id" itemLabel="name" id="systemPermissions"/>

这将从模型中获取一个List对象,并通过相应地选中每个复选框来映射所有允许的权限。 超级简单,超级简洁,但不幸的是,我没有找到Thymeleaf做到这一点的方法。

Thymeleaf是否可以动态创建复选框列表并将其映射为多对多关系?

谢谢!

可以使用以下代码段完成此操作(假设您将“所有权限”作为列表放置,而将角色的“允许权限”作为模型中的地图放置):

<thbody>
 <td>
  <th:block th:each="p: ${AllPermissions}">
   <input type="checkbox" name="perms" th:value="${p.id}" 
 th:checked="${#maps.containsKey(AllowedPermissionsForRole, p.id)}" /> <label th:text="${p.permissionsName}"></label>
  </th:block>
 </td>
</thbody>

顺便说一句,我在表格单元格中放置了所有复选框,但是您可以理解这个想法。 我们只是遍历所有可用权限,看看是否在当前所选角色的权限中拥有它。