有 JSP 变量 ${remoteFolder}
它的值是 \\file-srv\demo

使用嵌入在此 JSP 中的 jQuery。

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

如何保持这个var的初始值?

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

编辑 2:

JSP的JS部分,斜线被去掉了..

  <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>

编辑 3:
${remoteFolder} var 的早期使用,用斜线就可以了
/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}">

最佳答案

这里有两个问题。

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

var jsVariable = "${fn:replace(javaVariable, '\\', '\\\\')}";

其次,您希望将其作为 URL 参数发送。 \ 是 URL 参数中的非法字符。您需要对其进行 URL 编码。最简单的方法是为此使用 Javascript 的 escape() 函数。
var urlParameter = escape(jsVariable);

综上所述,
oScript.text+= "'script':'<%= request.getContextPath()   %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";

需要替换为
oScript.text += "'script':"
    + "'${pageContext.request.contextPath}/uploadFile"
    + "?portletId=${portletId}"
    + "&remoteFolder=" + escape("${fn:replace(remoteFolder, '\\', '\\\\')}")
    + "',";

或者,您可以使用 / 而不是 \ 作为文件路径分隔符。这在 Windows 中也能完美运行。您不需要转义它们以在字符串中使用,但是您仍然需要对其进行 URL 编码。
oScript.text += "'script':"
    + "'${pageContext.request.contextPath}/uploadFile"
    + "?portletId=${portletId}"
    + "&remoteFolder=" + escape("${remoteFolder}")
    + "',";

关于JavaScript 从 JSP 变量中删除斜线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2265596/

10-13 06:27