【发布时间】:2017-03-27 16:42:35
【问题描述】:
在 Spring Boot 项目中,我有一个用户列表,使用 Java List<User>
我将它从控制器传递到模板,我可以使用 HTML 列表 ul 循环遍历此列表,但我无法在 JavaScript 中执行此操作:
<script layout:fragment="script" th:inline="javascript">
/*<![CDATA[*/
var users = /*[[${users}]]*/ [];
for (var i = 0; i < users.length; i++) {
console.log(i); // Obviously here I would like to access the User properties
}
/*]]>*/
</script>
我收到此错误:
Error during execution of processor
'org.thymeleaf.standard.processor.text.StandardTextInliningTextProcessor'
我们如何使用 Thymeleaf 在 JavaScript 中遍历列表并访问 Java 对象属性?
谢谢。
编辑:到目前为止我发现了什么
我的 User 类是具有 Country 属性的 JPA 实体(Country 是另一个 JPA 实体):
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "country_id")
private Country country;
- 如果我传递没有国家/地区的用户列表,则获取 JavaScript 作品。
- 如果我传递一个国家列表并循环遍历(以自行测试 Country 类),它也可以工作。
- 如果我传递了一个用户列表,在该列表中我自己设置了国家(不是从数据库中获取)与数据库包含的值相同,它可以工作
- 如果我从数据库中检索国家/地区,然后将其设置给用户,则会失败。
所以问题似乎是因为国家实体是由 Spring Data/Hibernate 以某种方式创建/映射到用户的,Thymeleaf 无法反序列化它......
【问题讨论】:
-
尝试探索ajax
标签: javascript spring-boot thymeleaf