JSTL转义特殊字符[重复]

问题描述 投票:27回答:4

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

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

除了名称,我没有其他选择来使用ID,这是我从后端获得的唯一东西。

因此,是否有使用JSTL删除所有特殊字符的逻辑。在当前情况下,在JS中,我将对ID进行一些操作。这会导致每种浏览器出现许多问题。

请提出建议,在此先谢谢...

jsp escaping jstl special-characters
4个回答
49
投票
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实体:(<变成&lt;&变成&amp; ...]。

请注意,ID必须用HTML编码,而不是JavaScript。


22
投票
我认为您的问题被误解了。我和您到达同一地点,并用excapeXml =“ false”解决了问题。

<c:out value="${id}" escapeXml="false"/>

我在数据库中有类似的数据:

&lt; Hello World&gt;]

和escapeXml =“ false”使其显示

<Hello World>


2
投票
I think this is what you are lokking for

使用Spring的HtmlUtils.htmlEscape(字符串输入)。


1
投票
我只是遇到了一个必须逃脱的情况,即除其他特殊字符外,单引号。在这种情况下,fn:escapeXml失败。因此,我使用了Spring API的JavaScriptUtils.javaScriptEscape(),创建了一个标签并应用了。现在问题已解决。我还提到了URL:http://www.coderanch.com/t/528521/JSP/java/Passing-JSTL-variable-special-characters
© www.soinside.com 2019 - 2024. All rights reserved.