首页 > 解决方案 > 使用 Java 在 Thymeleaf 中避免特殊字符转义

问题描述

我正在尝试使用 Thymlead 作为我拥有的一些文本模板的模板引擎。

我的模板看起来像这样

free text 
[[${myVar}]]
more text

我的 Java 代码是

ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setTemplateMode(TEXT);

TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context(ENGLISH, null);
context.setVariable("myVar", "My text with special characters such as ' < > &");
System.out.println(templateEngine.process("templateFileName", ctx));

我期待上面的打印

free text 
My text with special characters such as ' < > &
more text

但它会打印

free text 
My text with special characters such as &#39; &lt; &gt; &amp;
more text

由于我正在处理纯文本而不是 HTML 或 XML,它不应该打印未转义的特殊字符吗?

我已将模式设置为 TEXT 并将编码设置为 UTF-8。

请赐教。

谢谢

缺口

标签: javatemplatesencodingthymeleaf

解决方案


您应该使用[(${myVar})]来打印未转义的文本。

(我同意[[${...}]]表达式在 TEXT 模板模式下转义 HTML 特殊字符很奇怪。)


推荐阅读