[英]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.