struts.ui.escapeHtmlBody
设置仅允许在标签正文中切换转义选项。例如,如果您使用嵌套标签并允许转义标签正文中使用的所有标签。它不允许关闭 Struts 标签属性的转义值。
Struts 标签的内容是使用 Freemarker 生成的。最新版本的 Struts 使用其自动转义 html 输出功能,该功能在 Freemarker 中默认启用。
对于单个插值,您可以使用
禁用自动转义:?no_esc
TEMPLATE
<#-- Let's assume we have "HTML" output format by default. -->
${'<b>test</b>'} <#-- prints: <b>test</b> -->
${'<b>test</b>'?no_esc} <#-- prints: <b>test</b> -->
您还可以使用 noautoesc 指令禁用整个部分的自动转义:
TEMPLATE
${'&'} <#-- prints: & -->
<#noautoesc>
${'&'} <#-- prints: & -->
...
${'&'} <#-- prints: & -->
</#noautoesc>
${'&'} <#-- prints: & -->
就像输出格式一样,这只适用于块内的部分(“着色”逻辑)。
也可以在 ftl 标头中禁用整个模板的自动转义。然后可以使用 autoesc 指令重新启用某个部分:
TEMPLATE
<#ftl autoesc=false>
${'&'} <#-- prints: & -->
<#autoesc>
${'&'} <#-- prints: & -->
...
${'&'} <#-- prints: & -->
</#autoesc>
${'&'} <#-- prints: & -->
当转义被禁用时,您还可以强制转义单个插值,使用
:?esc
TEMPLATE
<#ftl autoesc=false>
${'&'} <#-- prints: & -->
${'&'?esc} <#-- prints: & -->
当然,autoesc 和
?esc
也可以在 noautoesc
块内工作。
现在您可以欺骗 Freemarker 禁用单个值的自动转义
<s:optiontransferselect
leftTitle="'<strong>All system groups</strong>'?no_esc"</s>
另一种选择是使用自定义模板来自定义 html 输出,使用自定义 Freemarker 模板,您可以在其中关闭自动转义。