无法显示对象的地图

时间:2017-08-08 16:34:13

标签: spring spring-boot thymeleaf

我尝试显示对象的某个字段

private Integer id;
private String enumName;
private Map<String, String> fields = new HashMap<>();
...

在我的控制器中我有

List<EnumTypesDto> enumTypes = enumTypesService.getAllEnumTypes();
model.addAttribute("enumTypes", enumTypes);

在我的模板中我有

<p th:each="entry: ${enumTypes.fields}">
    <span th:text="'Key: ' + ${entry.key} + ', Value: ' + ${entry.value}"></span>
</p>

我收到此错误

EL1008E: Property or field 'fields' cannot be found on object of type 'java.util.ArrayList' - maybe not public?

1 个答案:

答案 0 :(得分:1)

仔细检查您的模板。 enumTypesEnumTypesDto个对象的列表,而不是您在fields类中定义的地图EnumTypesDto。我假设你正在努力实现这样的目标:

<div th:each="type: ${enumTypes}">
    <h2 th:text="${type.enumName}">

    <p th:each="entry: ${type.fields}">
        <span th:text="'Key: ' + ${entry.key} + ', Value: ' + ${entry.value}"></span>
    </p>
</div>

在上面的例子中,我们首先迭代所有EnumTypesDto个对象,对于每个对象,我们迭代fields map以显示其键和值。我希望它有所帮助。