Struts2标记中的HTML标记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2标记中的HTML标记相关的知识,希望对你有一定的参考价值。

我在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:另外两个注意事项:

  1. 您使用的是&字符,它在HTML中很特殊。如果你不打算逃脱字符串,你should write it as &amp;
  2. 正如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标记中的HTML标记的主要内容,如果未能解决你的问题,请参考以下文章

Struts2选择标记 - 动态添加选项

CPNtools协议建模安全分析---实例变迁标记

struts2应用程序中的警告:属性标记

将href链接放入Struts2 set标记中

CSS 显示代码片段:使用PRE标记包裹长行

InfoWindow中的Android Google地图摘要自动更新