【发布时间】: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,但这就是我得到的
'!', '!=', '%', '&#', '&&', '&gt;', '&lt;', '*', '+', '+=', ',', '-', '.', '/', <, <=, <Literal>, '==', '>', '>=', IDENTIFIER, STRING_IDENTIFIER, and, div, empty, eq, ge, gt, le, lt, mod, ne, not, or, '|' or '||' expected, got ':'
我想知道逻辑是错误的还是完全不是这样做的方式
【问题讨论】:
-
userRoles()是一种方法。封装方法的类的实例是否可用作 requestAttribute 或userRoles()方法返回的列表是否可用作 thymeleaf 代码运行时的 requestAttribute? -
这一行
<select th:field="*{userRole}">应该替换为<select th:field="*{ROLE}">。 Thymeleaf 文档中7.5 Dropdown/List selectors 部分的更多详细信息 -
只是一个建议。如果在声明变量时可以使用骆驼表示法,那就更好了。