6

我将 Thymeleaf 与 js 微模板例程结合使用,这会导致属性值中出现特殊字符。在运行 Thymeleaf 时

<a style="display:<%= x ? 'block' : 'none' %>;">

它创建

<a style="display:&lt;%= x ? &#39;block&#39; : &#39;none&#39; %&gt;;">

虽然我希望得到与我放入处理器中的完全相同的结果。如何在 HTML 属性值中使用特殊字符?非常感谢!

4

5 回答 5

11

试着玩

th:utext="#{unescaped text}"> 

请参阅 Thymeleaf 文档未转义文本

于 2016-02-16T20:41:15.393 回答
1

有一些变体需要审查:

  • 如上所述使用LEGACYHTML5选项templateResolver
  • Underscore.js 中的覆盖template方法

我更喜欢第二种方法。将此代码放在初始化脚本中:

var original = _.template;
_.template = function(content) {
    // fix operators escaped by Thymeleaf HTML5 validator
    content = content.replace(/&#39;/g, "'");
    content = content.replace(/&lt;/g, "<");
    content = content.replace(/&gt;/g, ">");
    return original.call(this, content);
};
于 2015-04-19T14:04:30.667 回答
0

我不确定其他模板模式,但我知道 html5 和 xml 不会让您这样做,因为将生成的文档 thymeleaf 不会针对 doctype 进行验证。所以至少在那些模式下,我认为这是不可能的。(也许使用自定义方言?)

那么为什么要在同一页面上使用两个模板工具呢?

于 2013-07-30T22:50:45.370 回答
0

您可以尝试用 CDATA 块包围您的代码。

http://www.w3schools.com/xml/xml_cdata.asp

于 2013-05-21T12:51:01.637 回答
0

正如 hubbardr 已经建议的那样,使用 LEGACYHTML5 作为模板模式可能会对您有所帮助。

于 2013-08-14T13:23:26.143 回答