freemarker 将 ${..} 显示为 html 而不是字符串

freemarker display ${..} as html rather than string

我从服务器获取 html 代码以构建 freemarker.ftl。 示例:

服务器return: String html代码="

你好

";

freemarker.ftl

${html代码}

除了:

你好

实际上:

你好

我能做什么?

默认情况下,FreeMarker 没有自动转义,因此它应该将该值打印为 HTML。但事实并非如此,我可以想象两种可能:

  • 您在 <#escape x as x?html>...</#escape> 中,或者是由自定义 TemplateLoader 添加到模板中的。在这种情况下,在 2.3.x 中你必须写成 <#noescape>${htmlCode}</#noescape>。 (在 2.4 中,如果一切按计划进行,它会少得多。)
  • 该值在到达 FreeMarker 之前被转义。所以模板已经得到 &lt;h1&gt;Hello&lt;/h1&gt; 作为字符串。