我有一个使用springTemplateEngine生成非html文本的方法。 我的模板如下所示:
some text
[[${variable}]]
但是当我运行模板引擎时,variable
设置为带引号的字符串:
string with "" quotes
引号被替换为html代码:
some text
string with "" quotes
有没有办法逃避这种行为并在结果字符串中出现实际引号?
所需的输出应为
some text
string with "" quotes
答案 0 :(得分:2)
从您的变量语法,我假设您使用Themeleaf作为您的TemplateEngine。
您可以使用[(${variable})]
语法来省略变量的转义。这是在Themeleaf 3中引入的。
请参阅Themeleaf issue tracker上的转义:
<强>逃逸强>
这些
[[...]]
表达式与Thymeleaf 2.1中的表达式一样,对输出执行转义操作。因此,如果我们的title
变量String
值为"this & that"
,那么:<p>Title: [[${title}]]</p>
将导致:
<p>Title: this & that</p>
但是,如果我们需要未转义输出怎么办?我们可能有一个
comment
变量,其值This is a <strong>great</strong> song!
我们知道包含HTML(请参阅那些<strong>
标记)我们想要输出而不会被转义...在这种情况下,我们可以使用非转义输出表达式,语法为
[(...)]
(注意内括号而不是括号)。所以:<p>Title: [[${title}]]</p> <p>Description: [(${description})]</p>
...将导致:
<p>Title: this & that</p> <p>Description: This is a <strong>great</strong> song!</p>
因此,我们看到上述内容完全等同于:
<p>Title: <th:block th:text="${title}"/></p> <p>Description: <th:block th:utext="${description}"/></p>