我有一个Java类 Result ,它包含一个名为 results 的变量,它是一个 HashMap 。
public class Result {
private HashMap<Class1, Class2> results = new HashMap<>();
}
我正在使用一个名为 Class1 的对象作为上述HashMap的键。
public class Class1 {
private String attribute1;
private String attribute2;
private String attribute3;
private String attribute4;
}
在前端,我以下面的方式迭代HashMap并访问值。
<span th:each="result : ${results}" th:if="${#strings.equals('SOME_VALUE', result.key.attribute1)}" th:text="${result.value.someAttribute}"/>
使用上面的百里香代码我得到了预期的结果。但是我需要知道有没有最简单的方法来访问HashMap值而不进行这样的迭代?我正在使用 thymeleaf 3.0.0.RELEASE 版本。
答案 0 :(得分:1)
您可以为此使用collection selection:
<span th:text="${results.^[key.attribute1 == 'SOME_VALUE'].values()[0].someAttribute}"/>
results.^[key.attribute1 == 'SOME_VALUE']
返回其中包含单个元素的HashMap
(在我看来,这应该返回Map.Entry
,但不是)。然后,我调用values()
(HashMap
上的一个函数,将HashMap中的值作为Collection
返回),[0]
返回该Collection
中的第一个元素。