如何从百里香的多个列表中访问一个字段

时间:2017-08-14 10:13:46

标签: thymeleaf

我是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字段吗?

1 个答案:

答案 0 :(得分:1)

partrep 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不会渲染任何元素,但会用于迭代部分原因。