gpt4 book ai didi

JavaScript 从 JSP 变量中删除斜杠

转载 作者:搜寻专家 更新时间:2023-11-01 05:02:58 24 4
gpt4 key购买 nike

有 JSP 变量 ${remoteFolder}

它的值为\\file-srv\demo

使用嵌入在这个 JSP 中的 jQuery。

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

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

已编辑:当 ${remoteFolder}form 标签内使用时,它解析正常。

编辑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 的早期用法,使用斜杠就可以了 < form enctype="multipart/form-data"method="post"target="uploadFrame"action="<%= request.getContextPath() %>/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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com