我遇到了一个关于特殊字符的奇怪问题。 在 JSP 中,我使用字段名作为 id,而这个名称可以是任何东西。
id="<1 and &>2" (OR)
id="aaa & bbb"
除了名称,我没有其他选项来使用 ID,这是我从后端获取的唯一信息。
那么,有没有逻辑可以使用 JSTL 删除所有特殊字符。 在当前情况下,在JS中,我将对ID执行某些操作。这会导致在每种类型的浏览器上都出现许多问题。
请建议,提前感谢...
我遇到了一个关于特殊字符的奇怪问题。 在 JSP 中,我使用字段名作为 id,而这个名称可以是任何东西。
id="<1 and &>2" (OR)
id="aaa & bbb"
除了名称,我没有其他选项来使用 ID,这是我从后端获取的唯一信息。
那么,有没有逻辑可以使用 JSTL 删除所有特殊字符。 在当前情况下,在JS中,我将对ID执行某些操作。这会导致在每种类型的浏览器上都出现许多问题。
请建议,提前感谢...
JSTL 提供两种方式来转义 HTML 特殊字符:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
[…]
<c:out value="${myName}"/>
和
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
[…]
${fn:escapeXml(myName)}
两者都会将特殊字符转换为相应的HTML实体:(<
变成<
,&
变成&
...)。
请注意,标识符必须在HTML中进行编码,但不要在JavaScript中进行编码。
我认为你的问题被误解了。 我也遇到了同样的问题,通过设置excapeXml="false"来解决了它。
<c:out value="${id}" escapeXml="false"/>
我在数据库中有这样的数据:
<Hello World>
并且escapeXml="false"使其显示出来。
<Hello World>
使用Spring的HtmlUtils.htmlEscape(String input)方法进行HTML转义。
<c:out>
和fn:escapeXml()
已经可以实现这个功能了,不需要其他库。 - BalusC我遇到了一个场景,需要转义单引号 ' 以及其他特殊字符。fn:escapeXml无法满足要求。所以我使用了Spring API的JavaScriptUtils.javaScriptEscape(),创建了一个标签并应用。现在问题已经解决。我还参考了这个URL:http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters。