我在Struts2标签中从文本到UTF-8的自动编码有一些问题。
我想传递一个包含从操作类到JSP页面的HTML标记的值,但在struts标记中,此值自动编码为UTF-8并且HTML标记显示不正确。
例如:我在action类中有一个名为param
的String变量
String param=param[0] + "& <br>" + param[1];
这个参数在JSP页面中传递,并使用Struts标记显示在页面中:
<s:property value="%{param}">
我的问题是,在jsp页面中,<br>
标签自动编码并且像测试"& <br>"
一样使用它而不是像HTML标签一样使用它并显示"&"
,然后输入换行符。
有谁知道如何跳过这个自动编码过程?
你试过(documented)属性escapeHtml
吗?
<s:property value="%{param}" escapeHtml="false" />
PS:另外两个注意事项:
&
字符,它在HTML中很特殊。如果你不打算逃脱字符串,你should write it as &
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"/>