是否可以将数组传递给这样的片段:
<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。
答案 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抱怨括号($)中出现逗号(,)。