我是Thymeleaf的初学者,我的班级Star
有一个名为Part
的另一个班级的列表:
星级:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idStar")
private List<Part> part;
和其他一些领域如
@Id
private Integer idStar;
@Column
private String soc;
在Thymeleaf 我想从模板访问Star
类的数据。此代码适用于字段idStar
:
<tr th:each ="star : ${starList}">
<td th:text="${star.idStar}"></td>
</tr>
但是对于我不知道如何访问数据的部分列表,实际上在Part
类我有一个名为rep
的字段,它也是一个列表,并在Rep
中class有一个名为note
的字段,我想访问它。
在Part class中:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idPart")
private List<Rep> rep;
在Rep类:
@Column
private Integer note;
我已完成此代码,但它不起作用:
<td th:text="${star.part.rep.note}"></td>
有人可以引导我获得note
字段吗?
答案 0 :(得分:1)
part
和rep
fiels是列表,因此像${star.part.rep.note}
这样的表达方式毫无意义。您可以在列表中包含零个或多个 Part 对象,因此您必须具体指定要从哪个对象中提取数据。这也适用于 Rep 对象列表。
因此,如果您想从这些集合的特定元素中获取数据,则必须使用索引访问。例如。从第一部分的第一部分获得注释:
<td th:text="${star.part[0].rep[0].note}"></td>
另一方面,如果你想渲染星级中所有代表的所有笔记,你应该像th:each
那样使用starList
:
<tr th:each ="star : ${starList}">
<th:block th:each="p : ${star.part}">
<td th:each="r : ${p.rep}" th:text="${r.note}"></td>
</th:block>
</tr>
上面使用的th:block不会渲染任何元素,但会用于迭代部分原因。