将表达式传递给Thymeleaf中的“include”属性

时间:2015-11-17 13:42:06

标签: spring spring-mvc spring-boot thymeleaf

我发现了Thymeleaf和spring MVC的一些非常有趣的东西以及它们如何融合在一起。现在我不相信这个问题没有解决方案:

所以要根据文档在元素中包含一个片段,你应该使用这个表达式:

<div th:include="path/to/fragment/template :: fragmentName"><div/>

它有效,但事实并非如此:

<div th:include="${model_nav_attribute}"><div/> //where model_nav_attribute = "path/to/fragment/template :: fragmentName"

这不起作用,我还没有进入调试细节,但我的想法告诉我这是因为::评估期间运算符${model_nav_attribute}没有被评估,因为此代码段有效细:

<div th:include="${model_nav_template_path} :: ${model_nav_fragment_name}"><div/> // model_nav_template_path = "where path/to/fragment/template and model_nav_template_path = "fragmentName"

但是再次传递两个论点太麻烦了。

所以,如果

    <div th:include="${model_nav_attribute}"><div/> //where model_nav_attribute = "path/to/fragment/template :: fragmentName"

绝不可能和/或更正你的建议是什么类似的效果? (这是一个根视图,具有基于URI路径的可互换内容,参数等...在单页应用程序中)我希望将片段分隔在不同的html文件中,这样它们就不会混乱,因此我需要更改路径。

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

<div th:include="__${model_nav_attribute}__"><div/>

__ 在正常表达式之前预处理表达式。

更多信息:http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#preprocessing