使用百里香叶同时迭代两个列表

时间:2019-01-30 07:33:36

标签: java list spring-boot iterator thymeleaf

<div class="form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12">Roles
        <span class="required">*</span>
    </label>
    <thbody>
        <td><th:block th:each="myRoles : ${MyRoles}">
            <input type="checkbox" name="roles"
                th:value="${myRoles .id}" checked />
            <label th:text="${myRoles .roleName}"></label>
        </th:block>--</td>
    </thbody>

  

当前仅显示一个列表(当前角色),我想显示绑定在对象$ {AllRoles}中的所有角色,并且仅检查当前提供给特定用户的那些角色。

我试图将角色保存在我的控制器中:

Set<UserRole> myRolesSet;
myRolesSet= myusr.getRoles();

以下是我试图做的事情:

<thbody >
        <td><th:block th:each="allRoles : ${allrole}">
        <input  type="checkbox" name="roles" th:value="${allRoles.id}"
        th:checked="${#sets.contains(myRolesSet,allRoles.id)}? 'checked' " />
        <label th:text="${allRoles.roleName}"></label>
        </th:block></td>
</thbody>

1 个答案:

答案 0 :(得分:1)

您应该像下面的代码示例一样这样做:

首先,您需要按照以下方法在控制器方法中将所选角色放入Map中:

HashMap<Integer, Role> myRolesMap = new HashMap<Integer, Role>();

在这种情况下,我假设您正在使用Integer键作为哈希映射。

其次,您必须遍历AllRoles列表并确定用户是否具有当前迭代的角色,然后应选中此复选框。

    <thbody>
        <td><th:block th:each="role: ${AllRoles}">
            <input type="checkbox" name="roles"
                th:value="${role.id}" th:checked="${#maps.containsKey(myRolesMap, role.id)}" />
            <label th:text="${role.roleName}"></label>
        </th:block>--</td>
    </thbody>