如何在Map中访问对象密钥而无需在Thymeleaf中进行迭代

时间:2018-08-13 06:42:46

标签: java spring-boot thymeleaf

我有一个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 版本。

1 个答案:

答案 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中的第一个元素。