【问题标题】:iterate simultaneously over two lists using thymeleaf使用 thymeleaf 同时迭代两个列表
【发布时间】:2019-01-30 07:33:35
【问题描述】:
<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>

【问题讨论】:

    标签: java list spring-boot iterator thymeleaf


    【解决方案1】:

    你应该像下面的代码示例那样做:

    首先,您需要将选定的角色放入控制器方法中的 Map 中,如下所示:

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

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

    其次,您必须遍历 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>
    

    【讨论】:

    • 嗨 Ahmet,我已经添加了更新的代码,尝试这样做。但它仍然无法正常工作。
    • 您是否像我在回答中所说的那样将用户角色放在地图中(您应该在控制器中执行此操作)。
    • 我将它们放在一个 SET 中(在我的控制器端)。这不行吗?
    • 引起:org.thymeleaf.exceptions.TemplateProcessingException:异常评估 SpringEL 表达式:“#maps.containsKey(myRolesMap,allRoles.id)”
    • 如果我使用 hasmap 或 set 会出现此异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多