Thymeleaf-将变量传递给片段

时间:2020-09-21 14:03:25

标签: thymeleaf

我有以下带有片段的模板,我在其中传递变量:

<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>

将变量分配给片段时我怎么了?

1 个答案:

答案 0 :(得分:0)

想通了。

错误的原因是,“内部”片段是在渲染期间与主片段一起渲染的。因此,如果包含物是由其自身渲染的,则也是如此。最后的渲染损坏了它。

可能的解决方案是:

  1. 将内部片段移动到另一个文件
  2. 在“内部”片段中添加th:if="false",以避免自渲染(包含项将继续起作用)。