JSTL转义特殊字符

时间:2011-05-26 06:11:27

标签: jsp escaping jstl special-characters

我对特殊字符有这个奇怪的问题。 在JSP中,我使用字段名称作为id,名称可以是

id="<1 and &>2" (OR)
id="aaa & bbb"

我没有任何其他选项可以使用除名称之外的ID,这是我从后端获得的唯一内容。

那么,是否有任何逻辑可以使用JSTL删除所有特殊字符。 在目前的场景中,在In JS中,我将使用ID进行一些操作。这导致每种浏览器出现很多问题。

请建议,提前致谢...

4 个答案:

答案 0 :(得分:46)

JSTL提供了两种转义HTML特殊字符的方法:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/> 

${fn:escapeXml(myName)}

两者都会将特殊字符转换为各自的HTML实体:( <变为&lt;&变为&amp; ...)。

请注意,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