将数组作为Thymeleaf片段中的参数传递

时间:2018-11-10 19:20:47

标签: spring-boot thymeleaf

是否可以将数组传递给这样的片段:

<div th:replace="fragments :: test_fragment( {'one', 'two', 'three'} )"></div>

像这样在片段中进行迭代:

<div th:fragment="test_fragment(numberArray)">

    <span th:each="number : ${numberArray}" th:text="${number}"></span>

</div>

作为奖励,还可以使用多维数组吗?

我正在Spring Boot 2.0项目中使用Thymeleaf。

3 个答案:

答案 0 :(得分:2)

是的,有可能。以下代码可以解决问题。唯一的区别是在数组外部添加了${}

<div th:replace="fragments :: test_fragment(${ {'one', 'two', 'three'} })"></div>

答案 1 :(得分:2)

我发现了两种方法:片段参数和th:with。

片段参数数组:

<div th:replace="~{fragments :: test_fragment(arrayX = ${ {'a', 'b'} }) }"></div>

多维数组参数数组

<div th:replace="~{fragments :: test_fragment(arrayX = ${ {{'a1','a2'},{'b1','b2'}} } ) }"></div>

th:with数组:

<div th:insert="~{fragments :: test_fragment}" th:with="arrayX=${ {'a','b'} }"></div>

th:with多维数组:

<div th:insert="~{fragments :: test_fragment}" th:with="arrayX=${ {{'a1','a2'},{'b1','b2'}} }"></div>

注意,当我使用th:with时,我使用了 th:insert 。这是因为 th:replace 将替换div行,从而替换th:with,这将导致arrayX不可用。

答案 2 :(得分:0)

可接受的答案的替代方法:

<div th:replace="fragments :: test_fragment('one,two,three')"></div>

并进行如下迭代:

<div th:fragment="test_fragment(numberArray)">

    <span th:each="number : ${#strings.arraySplit(numberArray, ',')}" th:text="${number}"></span>

</div>

帮助避免某些IDE发出警告,这些IDE抱怨括号($)中出现逗号(,)。