我想在过滤器内的 HTML 响应中用它们各自的 HTML 实体替换某些字符。字符包括<
, >
, &
. 我不能使用replaceAll()
它,因为它会替换所有字符,即使是那些属于 HTML 标记的字符。
这样做的最佳方法是什么?
我想在过滤器内的 HTML 响应中用它们各自的 HTML 实体替换某些字符。字符包括<
, >
, &
. 我不能使用replaceAll()
它,因为它会替换所有字符,即使是那些属于 HTML 标记的字符。
这样做的最佳方法是什么?
在 Java 中,您可以尝试 Apache Commons Lang (legacy v2) StringEscapeUtils.escapeHtml()
。或使用 commons-lang3: StringEscapeUtils.escapeHtml4()
。
请注意,这也会转换à
为à
& 这样的。
如果您正在使用诸如 JSTL 之类的技术,您可以简单地打印出使用的值<c:out value="${myObject.property}"/>
,它将自动转义。
该属性escapeXml
是true
默认的。
escapeXml
- 确定<,>,&,',"
结果字符串中的字符是否应转换为其对应的字符实体代码。默认值为true
。
在 Spring 生态系统中开发时,可以使用HtmlUtils.htmlEscape()
方法。
如需完整的 apidocs,请访问https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/HtmlUtils.html