Spring 引导 Freemarker - html 默认转义

Spring Boot Freemarker - html escaping by default

在使用 spring 引导自动配置时,是否有任何方便的方法来默认为所有 freemarker 模板启用 html 转义?

如果不是,添加以下任何解决方案的正确方法是什么(保持 spring 启动自动配置默认值,模板加载器除外)?

FreeMarker 2.3.24 的核心功能是自动转义,不过我写这篇文章的时候它还没有发布。在那之前(我猜是 1-2 个月),可以从主页下载 2.3.24-pre01,或者你可以构建 2.3-gae 分支头(尽管如果你只在 2.3.x 中使用自动转义,变化不大。 24 个特征)。目前在那里描述了自动转义:http://freemarker.incubator.apache.org/builds/2.3.24-pre01/_html/dgui_misc_autoescaping.html

如果您不能以这种形式使用 2.3.24,如您链接的第一个 post 所述,您可以使用自定义 TemplateLoader。由于 templateLoader (template_loader) 只是一个 FreeMarker 配置设置,希望它也可以在 Spring 中设置。

在遵循 ddekany 的建议使用 2.3.24 后,这里是解决方案:

将所有模板名称修改为 .ftlh(freemarker 要求自动打开 HTML escaper)- 包括 spring.ftl(如果正在使用)。更新后的 spring.ftlh 可能需要为属性

添加一些 '?no_esc'

调整 freemarker 配置以使用这些文件:

spring.freemarker.suffix=.ftlh
spring.freemarker.settings.recognize_standard_file_extensions=true

修改pom.xml以使用freemarker 2.3.24:

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>freemarker-2.3.24-pre01</version>
</dependency>

以下解决方案是使用本地 JAR 文件,因为 2.3.24 尚未在 maven 上:

mvn install:install-file -Dfile="freemarker-2.3.24-pre01.jar" -DgroupId="org.freemarker" -DartifactId="freemarker" -Dversion="freemarker-2.3.24-pre01" -Dpackaging=jar

瞧,自动 freemarker HTML 转义 Spring 启动 ;)