【问题标题】:Struts 2 textfield convert apostrophe to "&#39 ;"Struts 2 文本字段将撇号转换为“&#39 ;”
【发布时间】:2023-03-11 13:27:01
【问题描述】:

我正在尝试使用已保存的值填充名称文本字段。

现在该值可以包含撇号。但文本字段正在将 撇号 转换为“&#39 ;”。

例如。 sdsd'sds ==> sdsd&#39 ;sds

escape 文本字段的属性不起作用。

我该怎么办?

【问题讨论】:

  • 这不是 UTF-8 编码,而是 HTML 实体编码:我错过了什么吗?
  • 是的。我正在使用 ESAPI 框架来验证和规范化输入以避免任何 XSS。但是这个撇号是用特殊符号转换的。
  • 使用 ESAPI.encoder().decodeForHTML() 函数解决了这个问题。
  • 回答您的问题,并将 esapi 添加到标签中

标签: struts2 escaping textfield encode esapi


【解决方案1】:

由于编码功能,您会得到这个。 为了避免这种情况并得到完全一样的结果,你必须使用 HtmlDecode,它可以在 java 的 util 包中找到。

【讨论】:

    【解决方案2】:

    您可能在服务器端转义它。

    不要。

    Struts 会处理这个问题。

    您只需使用escapeHtml="false" 属性指定何时需要相反的值(获取<s:property /> 标记中的未转义 值)。


    P.S:有些角色需要像 €(欧元符号)这样的特殊威胁,但这是另一回事。

    【讨论】:

      【解决方案3】:

      使用 ESAPI.encoder().decodeForHTML() 函数解决了这个问题。 在我在 s:textfields 中使用之前解码值后,值得到正确呈现。

      谢谢。

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多