Thymeleaf多对多复选框

时间:2019-03-03 14:13:01

标签: java list checkbox many-to-many thymeleaf

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

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

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

Thymeleaf是否有办法动态创建复选框列表并将其映射成多对多关系?

谢谢!

1 个答案:

答案 0 :(得分:1)

这可以通过如下代码段来完成(假设您将“所有权限”作为列表,并将角色的“允许权限”作为模型中的Map):

<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>

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