如何在Thymeleaf TEXT模板中正确使用th:replace?
在Thymeleaf TEXT模板中实现文件替换/插入的正确方式
问题根源
你之前的写法错误在于使用了HTML模式的[#th:block]标签语法,Thymeleaf的TEXT模式不支持这种标签式指令,只会将其当作普通文本处理,最终直接输出片段路径字符串。
正确实现方案
修改模板引用语法
直接使用TEXT模式的内联表达式引用外部文件,无需包裹任何标签:[[#{email.greeting}]], [[#{email.message}]] [[#{email.signature}]] ------------------------------------------ [[~{includes/footer}]]确认文件路径匹配
你的模板解析器前缀为/templates/mail/、后缀为.txt,因此includes/footer会对应到/templates/mail/includes/footer.txt,请确保该文件存在且路径完全匹配。验证处理结果
修改后Thymeleaf会正确替换片段内容,最终输出示例:Hello you, you look really great today :) Have fun and enjoy your round trip here on earth! ------------------------------------------ Your company - 123 Main St, Anytown
扩展:给片段传递参数
如果需要向插入的片段传递变量(比如footer.txt中包含[[${companyInfo}]]),可以通过表达式传参:
[[~{includes/footer(companyInfo=${currentCompany})}]]
内容的提问来源于stack exchange,提问作者Slevin
相关产品推荐
相关产品推荐

