【问题标题】:Thymeleaf many-to-many checkbox listThymeleaf 多对多复选框列表
【发布时间】:2019-07-24 23:12:14
【问题描述】:

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

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

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

Thymeleaf 有没有办法动态创建复选框列表并将多对多关系映射到它?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    这可以通过如下所示的 sn-p 来完成(假设您将所有权限作为列表并将角色的允许权限作为模型中的地图):

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

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

    【讨论】:

    • 感谢您的回复!发送表单时,底层控制器如何将这些复选框映射回实体?
    • 检查此 SO 链接 stackoverflow.com/questions/35679777/… 您可以将检查值作为字符串列表,然后将它们添加/匹配到您的实体
    • 我可以确认这行得通! Thymeleaf 能做的事情真是太神奇了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多