Struts 2 标签中的 HTML 标签自动编码为 UTF-8

问题描述 投票:0回答:2

我在 Struts 2 标签中将 HTML 标签自动编码为 UTF-8 时遇到一些问题。

我想将一个包含 HTML 标签的值从操作类传递到 JSP 页面,但在 Struts 标签中,该值会自动编码为 UTF-8,并且 HTML 标签无法正确显示。

例如:

我在操作类中有一个名为

String
param
变量:

String param=param[0] + "& <br>" + param[1];

这个

param
正在传递到JSP页面并使用Struts标签显示在页面中:

<s:property value="%{param}">

我的问题是,在JSP页面中,

<br>
标签会自动编码并像
&ltbr&gt
一样显示,而不是像HTML标签一样使用它。

有谁知道,我怎样才能跳过这个自动编码过程?

jsp encoding struts2 struts-tags
2个回答
2
投票

您尝试过(记录)属性

escapeHtml
吗?

<s:property value="%{param}" escapeHtml="false" />

PS:另外两个注意事项:

  1. 您正在使用字符

    &
    ,它在 HTML 中很特殊。如果您不打算转义字符串,则 应该将其写为
    &amp;

  2. Rowan C 在他的回答中恰当地指出,在网页中使用未转义的 html 可能很危险,特别是如果字符串(在您的情况下为

    param
    数组)是动态的并且可以由客户端设置。如果您不能信任或无法正确消毒它,那就不要这样做。说真的。


1
投票

s:property
标签默认转义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"/>
© www.soinside.com 2019 - 2024. All rights reserved.