【问题标题】:How to iterate a java array如何迭代java数组
【发布时间】:2019-01-15 11:42:54
【问题描述】:

我正在 Spring Boot 中设置基于角色的授权,在 thymeleaf 下拉选择中使用用户角色作为客户或供应商。列表项来自 java private List<String> userRoles()。如何迭代视图中的列表项?

我尝试过使用 Role.java 模型类和 User.java 模型。我将List<String> userRoles() 中的列表项设为

List<String> ROLE = new ArrayList<>();
ROLE.add("CLIENT");
ROLE.add("SUPPLIER");

控制器 Java 列表项

private List<String> userRoles() {
    List<String> ROLE = new ArrayList<>();
    ROLE.add("CLIENT");
    ROLE.add("SUPPLIER");
    return ROLE;
}

查看迭代

<select th:field="*{userRole}">
    <option th:each="*ROLE:${userRoles}" th:value="${ROLE}" th:text="${ROLE}">
        Select Role
    </option>
</select>

我希望 ROLE 变量具有元素 CLIENT 和 SUPPLIER,但这就是我得到的 '!', '!=', '%', '&amp;#', '&amp;&amp;', '&amp;gt;', '&amp;lt;', '*', '+', '+=', ',', '-', '.', '/', &lt;, &lt;=, &lt;Literal&gt;, '==', '&gt;', '&gt;=', IDENTIFIER, STRING_IDENTIFIER, and, div, empty, eq, ge, gt, le, lt, mod, ne, not, or, '|' or '||' expected, got ':' 我想知道逻辑是错误的还是完全不是这样做的方式

【问题讨论】:

  • userRoles() 是一种方法。封装方法的类的实例是否可用作 requestAttribute 或 userRoles() 方法返回的列表是否可用作 thymeleaf 代码运行时的 requestAttribute?
  • 这一行&lt;select th:field="*{userRole}"&gt; 应该替换为&lt;select th:field="*{ROLE}"&gt;。 Thymeleaf 文档中7.5 Dropdown/List selectors 部分的更多详细信息
  • 只是一个建议。如果在声明变量时可以使用骆驼表示法,那就更好了。

标签: java thymeleaf


【解决方案1】:

您收到该错误消息的原因是您的 th:each 表达式中有一个额外的星号:

th:each="*ROLE:${userRoles}"

应该是

th:each="ROLE: ${userRoles}"

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2011-04-23
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多