使用后报错Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes
时间: 2024-03-02 17:47:48 浏览: 164
这个错误是因为你在Freemarker中启用了自动转义(auto-escaping)功能,并且输出格式(output format)设置为了HTML,同时又使用了`${xxx?html}`进行HTML转义,这样会导致内容被重复转义。
要解决这个问题,可以有两种方法:
1. 关闭自动转义功能
在Freemarker的配置中,关闭自动转义功能,例如:
```
Configuration config = new Configuration(Configuration.VERSION_2_3_31);
config.setDefaultEncoding(StandardCharsets.UTF_8.name());
config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
config.setAutoEscapingPolicy(Configuration.DISABLE_AUTO_ESCAPING_POLICY);
```
这样就可以使用`${xxx?html}`进行HTML转义了。
2. 使用新的转义语法
Freemarker从2.3.24版本开始提供了新的转义语法,可以在自动转义开启的情况下使用。使用方法是`${xxx?html!}`,即在转义过滤器名称后面加上一个感叹号。例如:
```
<p>${content?html!}</p>
```
这样就可以在自动转义开启的情况下,使用`${xxx?html!}`进行HTML转义。
相关问题
启动vue项目报错openssl-legacy-provider is not allowed in NODE_OPTIONS
根据提供的引用内容,你可以尝试删除`SET NODE_OPTIONS=--openssl-legacy-provider`这行代码来解决启动vue项目报错`openssl-legacy-provider is not allowed in NODE_OPTIONS`的问题。
这个错误通常是由于使用了不允许的`openssl-legacy-provider`选项导致的。通过删除这行代码,你可以尝试重新启动vue项目,看看是否能够解决这个问题。
ubuntu报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
根据提供的引用内容,你可以尝试以下两种解决方式来解决"node: --openssl-legacy-provider is not allowed in NODE_OPTIONS"的报错:
1. 将"SET NODE_OPTIONS=–openssl-legacy-provider"命令删除即可。
2. 如果你使用的是Node.js 9版本,可以尝试以下命令来安装Node.js 9并解决该报错:
```shell
curl -sL https://deb.nodesource.com/setup_.x | sudo -E bash
sudo apt-get install -y nodejs
```