5

我想在过滤器内的 HTML 响应中用它们各自的 HTML 实体替换某些字符。字符包括<, >, &. 我不能使用replaceAll()它,因为它会替换所有字符,即使是那些属于 HTML 标记的字符。

这样做的最佳方法是什么?

4

3 回答 3

12

在 Java 中,您可以尝试 Apache Commons Lang (legacy v2) StringEscapeUtils.escapeHtml()。或使用 commons-lang3: StringEscapeUtils.escapeHtml4()

请注意,这也会转换à&agrave;& 这样的。

于 2012-06-11T10:21:15.327 回答
1

如果您正在使用诸如 JSTL 之类的技术,您可以简单地打印出使用的值<c:out value="${myObject.property}"/>,它将自动转义。

该属性escapeXmltrue默认的。

escapeXml- 确定<,>,&,',"结果字符串中的字符是否应转换为其对应的字符实体代码。默认值为true

http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/

于 2012-06-11T10:11:06.060 回答
0

在 Spring 生态系统中开发时,可以使用HtmlUtils.htmlEscape()方法。

如需完整的 apidocs,请访问https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/HtmlUtils.html

于 2021-05-17T21:15:23.457 回答