我想在过滤器内的HTML响应中用它们各自的HTML实体替换某些字符。字符包括<
,>
,&
。我无法使用replaceAll()
,因为它会替换所有字符,甚至是HTML标记中的字符。
这样做的最佳方法是什么?
答案 0 :(得分:11)
您可以尝试使用Java,Apache Commons Lang(旧版v2)StringEscapeUtils.escapeHtml()
或者使用commons-lang3:StringEscapeUtils.escapeHtml4()
。
请注意,这也会将à
转换为à
&amp;这样
答案 1 :(得分:1)
如果您使用的是JSTL等技术,则只需使用<c:out value="${myObject.property}"/>
打印出该值即可自动转义。
默认情况下,escapeXml
属性为true
。
escapeXml
- 确定结果中的字符<,>,&,',"
string应该转换为它们对应的字符实体 码。默认值为true
。
答案 2 :(得分:0)
在 Spring 生态系统中开发时,可以使用 HtmlUtils.htmlEscape()
方法。
有关完整的 apidoc,请访问 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/HtmlUtils.html