UpH*_*lix 10 javascript java jstl escaping
我正在使用JSTL从我们的数据库中检索一个值.我正在将其插入到一些javascript中以将其用作变量.我需要转义JSTL所持有的值的输出,因为如果有单引号或双引号则会破坏我的脚本.该值是用户指定的.
例:
执行以下操作:
<c:set var="myVar" value="Dale's Truck"/>
<script type="text/javascript">
var mayVar = '${myVar}';
</script>
Run Code Online (Sandbox Code Playgroud)
实际上最终看起来像:
<script type="text/javascript">
var mayVar = 'Dale's Truck';//extra single quote breaks the JS
</script>
Run Code Online (Sandbox Code Playgroud)
因此,我需要将JSTL var转换为像"Dale%27s Truck"之类的转义才能进入JS,因为它已经太晚了,因为它已经太晚了,当它到达我的JS能够在JS中完成它.
Viv*_*ath 12
尝试使用fn:replace:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set var="myVar" value="Dale's Truck" />
<c:set var="search" value="'" />
<c:set var="replace" value="%27" />
<c:set var="myVar" value="${fn:replace(myVar, search, replace)}"/>
Run Code Online (Sandbox Code Playgroud)
或者你可以用反斜杠来逃避单引号:
<c:set var="replace" value="\\'" />
Run Code Online (Sandbox Code Playgroud)
或者如果你甚至不想做所有这些并且你确定该字符串不包含双引号,为什么不这样做:
var myVar = "${myVar}"; //string enclosed with double quotes instead of single quotes
Run Code Online (Sandbox Code Playgroud)
但是如果字符串有双引号,你仍然需要转义它们:
<c:set var="search" value="\"" />
<c:set var="replace" value="\\\"" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14410 次 |
| 最近记录: |