JSTL转义特殊字符

Max*_*Max 27 jsp jstl escaping special-characters

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

id="<1 and &>2" (OR)
id="aaa & bbb"
Run Code Online (Sandbox Code Playgroud)

我没有任何其他选项来使用ID而不是名称,这是我从后端得到的唯一东西.

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

请建议,提前致谢...

JB *_*zet 48

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

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${myName}"/> 
Run Code Online (Sandbox Code Playgroud)

${fn:escapeXml(myName)}
Run Code Online (Sandbox Code Playgroud)

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

请注意,ID必须以HTML格式编码,但不能以JavaScript格式编码.


Jam*_*mes 21

我认为你的问题被误解了.我和你一样到了同一点,用excapeXml ="false"解决了问题.

<c:out value="${id}" escapeXml="false"/> 
Run Code Online (Sandbox Code Playgroud)

我在数据库中有数据,如:

< Hello World>

和escapeXml ="false"使它显示

<Hello World>
Run Code Online (Sandbox Code Playgroud)

  • 将字符串转义为数据库中的HTML并不是一个好主意. (6认同)