首页 > 解决方案 > 如何在不迭代 Thymeleaf 的情况下访问 Map 中的对象键

问题描述

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

标签: javaspring-bootthymeleaf

解决方案


您可以为此使用集合选择

<span th:text="${results.^[key.attribute1 == 'SOME_VALUE'].values()[0].someAttribute}"/>

results.^[key.attribute1 == 'SOME_VALUE']返回 a HashMap,其中包含一个元素(在我看来,这应该返回 a Map.Entry,但事实并非如此)。然后我调用values()HashMap将 HashMap 中的值作为 a 返回的函数Collection)并[0]返回 that 中的第一个元素Collection


推荐阅读