JavaScript从JSP变量中删除斜杠

ser*_*nni 4 javascript variables jsp escaping slash

有JSP变量 ${remoteFolder}

它的价值是\\ file-srv\demo

使用此JSP中嵌入的jQuery.

jQuery将${remoteFolder}变量解析为\ file-srvdemo,即删除一个斜杠.

如何保持这个变量的初始值?

编辑:当${remoteFolder}在form标签内使用时,它解决了OK.

edited2:

JS部分JSP,斜杠被剥离了..

  <script>
        var oScript = document.createElement("script");
        oScript.type = "text/javascript";
        oScript.text = "var $j = jQuery.noConflict();";
        oScript.text+= "$j(document).ready(function(){";
        ...
       oScript.text+= "'script':'<%= request.getContextPath()   %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";
        ...
        oScript.text+= "});"; 
        document.body.appendChild(oScript);        
    </script>
Run Code Online (Sandbox Code Playgroud)

edited3:

早期使用${remoteFolder}var,用斜杠都可以<form enctype ="multipart/form-data"method ="post"target ="uploadFrame"action ="<%= request.getContextPath()%>/uploadFile?portletId = $ {portletId}&remoteFolder = $ {remoteFolder}">

Bal*_*usC 5

这里有两个问题.

首先,它\是JS字符串中的转义字符.当你想\在JS字符串中表示一个时,你需要对它进行双重转义:\\.最简单的方法是使用JSTL fn:replace.

var jsVariable = "${fn:replace(javaVariable, '\\', '\\\\')}";
Run Code Online (Sandbox Code Playgroud)

其次,您希望将其作为URL参数发送.这\是URL参数中的非法字符.您需要对其进行URL编码.最简单的方法是使用Javascript的escape()功能.

var urlParameter = escape(jsVariable);
Run Code Online (Sandbox Code Playgroud)

总结一下,

oScript.text+= "'script':'<%= request.getContextPath()   %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";
Run Code Online (Sandbox Code Playgroud)

需要被替换

oScript.text += "'script':"
    + "'${pageContext.request.contextPath}/uploadFile"
    + "?portletId=${portletId}"
    + "&remoteFolder=" + escape("${fn:replace(remoteFolder, '\\', '\\\\')}")
    + "',";
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用/而不是\文件路径分隔符.这在Windows中也很完美.您无需转义它们以便在字符串中使用,但您仍然需要对其进行URL编码.

oScript.text += "'script':"
    + "'${pageContext.request.contextPath}/uploadFile"
    + "?portletId=${portletId}"
    + "&remoteFolder=" + escape("${remoteFolder}")
    + "',";
Run Code Online (Sandbox Code Playgroud)