.stream().filter() 在标签内

.stream().filter() inside a tag

我正在使用 thymeleaf 进行一个小项目。并有这样的设置。

public class Datacenter {

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, orphanRemoval = true, mappedBy="datacenter"
private Set<Cage> cageSet = new HashSet<>();
}

public class Cage {

@ManyToOne
@JoinColumn(name = "datacenter_id")
private Datacenter datacenter;

@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, orphanRemoval = true, mappedBy="rack"
private Set<Rack> rackSet= new HashSet<>();
    
}

public class Rack {

@ManyToOne
@JoinColumn(name = "cage_id")
private Cage cage;

private String var1;
private String var2;
private Boolean active;
}

问题是我想要一个包含可折叠数据中心列表的页面,当它在下一行扩展到 table 时,它列出了那里定义的所有笼子。接下来,我想要一行显示来自相关 Set<Rack> 的某个对象 Rack 的值 - 更准确地说,只有一个具有 true.

的活动值

是否有一个选项可以通过 Thymeleaf 使用类似以下内容来引用该对象:

th:text="${cage.rackSet.stream().filter(some_filtering_here).getVar2()}"

或者我应该在控制器级别创建一个单独的对象层次结构来准确模拟我希望页面的外观吗?

关于这些,看collection selection and collection projection。在您的情况下,这样的表达式应该有效:

th:text="${cage.rackSet.^[active].var2}"