繁体   English   中英

如何将 HashMap 数组传递给部分

[英]How to pass an array of HashMaps to partial

我正在用 Java 和 Thymeleaf 构建一个应用程序,我需要将一个 HashMap 传递给一个部分。 我不想从控制器传递它。

这是我到目前为止尝试过的:

用户.html

<div th:replace="partials/icons.html :: icons(icons=${ {name='user', title='User'}, {name='blog', title='Blog'} })"></div>

/partials/icons.html

<div th:fragment="icons">
    <th:block th:each="icon : ${icons}">
        <button th:class="'icon-' + ${icon.name}" th:text="${icon.title}"></button>
    </th:block>
</div>

它给了我一个错误, =出乎意料。 什么是正确的语法?

编辑:我应该事先澄清:没有办法用片段参数的语法来做你想做的事情。 我下面的方法是一种解决方法。

假设您有以下对象作为起点:

public class Icon {

    private String name;
    private String title;

    // getters and setters...
}

假设您有一个此类对象的List ,称为icons ...

此列表以通常的方式传递给您的 Thymeleaf 渲染器。 我不使用 Spring,所以你如何做到这一点(我假设)是通过注释。 我可能是错的 - 但是它不应该影响下面的方法。 在我的 no-Spring 方法中,列表被添加到 Thymeleaf 模型中作为map.put("icons", icons);

我的父 Thymeleaf 模板中有以下内容:

<div th:replace = "/iconsfragment.html :: icons(iconlist='icons')">
</div>

我在iconsfragment.html有以下iconsfragment.html

<div th:fragment="icons(iconlist)">
    <th:block th:each="icon : ${__${iconlist}__}">
        <div th:class="'icon-' + ${icon.name}" th:text="${icon.title}"></div>
    </th:block>
</div>

它使用预处理器__${...}__将参数(字符串)转换回可迭代对象。

您关心的结果 HTML 是:

<div class="icon-firstName">firstTitle</div>

<div class="icon-secondName">secondTitle</div>

当然,只有当您想以各种不同的方式重用该片段时,这才真正有意义。 否则只需将${icons}对象直接传递给片段。

我的<div>示例当然需要适应您的<button>示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM