HTML 标签在 Struts2 标签中自动从文本编码为 UTF-8
HTML tag auto encoding from text to UTF-8 in Struts2 tags
我在 Struts2 标签中将文本自动编码为 UTF-8 时遇到一些问题。
我想将一个值 包含一个 HTML 标记从操作 class 传递到 JSP 页面,但是在 Struts 标记中这个值是自动编码为 UTF-8,HTML 标签显示不正确。
例如:
我在 class
中有一个名为 param
的字符串变量
String param=param[0] + "& <br>" + param[1];
而这个 param
是传入 JSP 页面并使用 Struts 标签显示在页面中:
<s:property value="%{param}">
我的问题是,在 JSP 页面中,<br>
标签自动编码并像 <br>
一样显示,而不是像 HTML 标签一样使用它。
有谁知道我该如何跳过这个自动编码过程?
您是否尝试过 (documented) 属性 escapeHtml
?
<s:property value="%{param}" escapeHtml="false" />
PS: 两个补充说明:
您使用的字符 &
在 HTML 中很特殊。如果你不打算转义字符串,你 should write it as &
正如 Rowan C 在他的回答中恰当地指出的那样,在网页中使用未转义的 html 可能很危险,尤其是如果字符串(在您的情况下是 param
数组) 是动态的,可以由客户端设置。如果您不能信任或无法正确清理它,那么就不要那样做。说真的。
s:property
tag 默认转义 html 代码以防止 XSS 安全违规。如果您信任使用此标签显示的内容,则可以使用 escape
属性之一来禁用此过程:
Name Required Default Evaluated Type Description
escapeCsv false false false Boolean Whether to escape CSV (useful to escape a value for a column)
escapeHtml false true false Boolean Whether to escape HTML
escapeJavaScript false false false Boolean Whether to escape Javascript
escapeXml false false false Boolean Whether to escape XML
在您的代码中您可以使用
<s:property value="%{param}" escapeHtml="false"/>
我在 Struts2 标签中将文本自动编码为 UTF-8 时遇到一些问题。
我想将一个值 包含一个 HTML 标记从操作 class 传递到 JSP 页面,但是在 Struts 标记中这个值是自动编码为 UTF-8,HTML 标签显示不正确。
例如: 我在 class
中有一个名为param
的字符串变量
String param=param[0] + "& <br>" + param[1];
而这个 param
是传入 JSP 页面并使用 Struts 标签显示在页面中:
<s:property value="%{param}">
我的问题是,在 JSP 页面中,<br>
标签自动编码并像 <br>
一样显示,而不是像 HTML 标签一样使用它。
有谁知道我该如何跳过这个自动编码过程?
您是否尝试过 (documented) 属性 escapeHtml
?
<s:property value="%{param}" escapeHtml="false" />
PS: 两个补充说明:
您使用的字符
&
在 HTML 中很特殊。如果你不打算转义字符串,你 should write it as&
正如 Rowan C 在他的回答中恰当地指出的那样,在网页中使用未转义的 html 可能很危险,尤其是如果字符串(在您的情况下是
param
数组) 是动态的,可以由客户端设置。如果您不能信任或无法正确清理它,那么就不要那样做。说真的。
s:property
tag 默认转义 html 代码以防止 XSS 安全违规。如果您信任使用此标签显示的内容,则可以使用 escape
属性之一来禁用此过程:
Name Required Default Evaluated Type Description
escapeCsv false false false Boolean Whether to escape CSV (useful to escape a value for a column)
escapeHtml false true false Boolean Whether to escape HTML
escapeJavaScript false false false Boolean Whether to escape Javascript
escapeXml false false false Boolean Whether to escape XML
在您的代码中您可以使用
<s:property value="%{param}" escapeHtml="false"/>