我正在将应用程序从JSP移植到Thymeleaf。到目前为止,我已经找到了等效于我在JSP EXCEPT中所做的所有工作。我有一个角色实体,它与许可实体具有多对多关系,这可能是一个非常典型的设置。在JSP中,我曾经能够编辑角色并将每个权限映射到一个复选框,如下所示:
<form:checkboxes element="li" items="${systemPermissions}" path="permissions" itemValue="id" itemLabel="name" id="systemPermissions"/>
这将从模型中获取一个List对象,并通过相应地选中每个复选框来映射所有允许的权限。超级简单,超级简洁,但不幸的是,我没有找到使用Thymeleaf做到这一点的方法。
Thymeleaf是否有办法动态创建复选框列表并将其映射成多对多关系?
谢谢!
答案 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>
在这里,我将所有复选框都放在一个表格单元格中,但是您可以理解这个想法。我们只是遍历所有可用权限,看看是否在当前所选角色的权限中拥有它。