我有以下带有片段的模板,我在其中传递变量:
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" />
</span>
<a>
<th:block th:include=" :: inner(${item})" />
</a>
</div>
<th:block th:fragment="inner(item)">
[[${item.name}]]
</th:block>
如果我尝试渲染它,我会收到一条错误消息:
Property or field 'name' cannot be found on null
如果我这样渲染它
<div th:fragment="main">
<span>
<th:block th:include=" :: inner(${item})" />
[[${item.name}]]
</span>
<a>
<th:block th:include=" :: inner(${item})" />
</a>
</div>
将变量分配给片段时我怎么了?
答案 0 :(得分:0)
想通了。
错误的原因是,“内部”片段是在渲染期间与主片段一起渲染的。因此,如果包含物是由其自身渲染的,则也是如此。最后的渲染损坏了它。
可能的解决方案是:
th:if="false"
,以避免自渲染(包含项将继续起作用)。