我对特殊字符有这个奇怪的问题。 在JSP中,我使用字段名称作为id,名称可以是
id="<1 and &>2" (OR)
id="aaa & bbb"
我没有任何其他选项可以使用除名称之外的ID,这是我从后端获得的唯一内容。
那么,是否有任何逻辑可以使用JSTL删除所有特殊字符。 在目前的场景中,在In JS中,我将使用ID进行一些操作。这导致每种浏览器出现很多问题。
请建议,提前致谢...
答案 0 :(得分:46)
JSTL提供了两种转义HTML特殊字符的方法:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/>
和
${fn:escapeXml(myName)}
两者都会将特殊字符转换为各自的HTML实体:( <
变为<
,&
变为&
...)。
请注意,ID必须以HTML格式编码,但不能用JavaScript编码。
答案 1 :(得分:20)
我认为你的问题被误解了。 我和你一样到了同一点,用excapeXml =“false”解决了问题。
<c:out value="${id}" escapeXml="false"/>
我在数据库中有数据,如:
&amp; lt; Hello World&amp; gt;
和escapeXml =“false”使其显示
<Hello World>
答案 2 :(得分:2)
I think this is what you are lokking for
使用Spring的HtmlUtils.htmlEscape(字符串输入)。
答案 3 :(得分:1)
我刚遇到一个我不得不逃避的场景。即单引号,除了其他特殊字符。在那种情况下fn:escapeXml失败。所以我使用了Spring API的JavaScriptUtils.javaScriptEscape(),创建了一个标签并应用了。现在问题得到了解决。我还提到了网址:http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters。