Thymeleaf与嵌套(递归)评估和th:替换

时间:2015-12-14 15:15:03

标签: replace include nested fragment thymeleaf

我试图创建一个模板,允许我将属性传递给模型,指定将用于替换模板中div标签的片段名称。

模板代码为:

a_1 b_1
a_2 b_2
a_4 b_4

(INCLUDE_FRAGMENT_NAME的值为"片段"。 在我的控制器中,我有:

    <div th:replace="${__${T(mypackage.WebUtils).INCLUDE_FRAGMENT_NAME}__}"/>

MAIN_OVERVIEW_DIV_INCLUDE为&#34; main / main :: fragment&#34;。

我得到的错误就是这个:

  

HTTP状态500 - 请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:&#34; ServletContext资源[/ WEB-INF / templates / main / main :: fragment.html]&#34; - 第43行,col 14)

我知道网址错误但我不知道如何解决这个问题。有什么帮助吗?

另外,如果我可以动态设置main / main中的片段名称会很好,但我想这是不可能的,因为片段在被包含之前没有被评估,对吧?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题与https://github.com/thymeleaf/thymeleaf-spring/issues/77有关 - 将代码更改为

<div th:replace="${__${T(mypackage.WebUtils).INCLUDE_FILE_VAR_NAME}__} :: ${__${T(mypackage.WebUtils).INCLUDE_FRAGMENT_VAR_NAME}__}"/>

为我解决了这个问题。有关动态片段名称,请参阅http://forum.thymeleaf.org/Thymeleaf-3-with-nested-recursive-evaluation-and-th-replace-td4029392.html#a4029395