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