Have JSP variable ${remoteFolder}
It's value is \\file-srv\demo
Use jQuery embedded in this JSP.
jQuery resolves ${remoteFolder}
variable as \file-srvdemo ,i.e. one slash is removed.
How to remain initial value of this var?
edited: when ${remoteFolder}
is used inside form
tag, that it resolved OK.
edited2:
JS part of JSP, slashes are stripped out..
<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>
edited3:
earlier usage of ${remoteFolder}
var,that was all OK with slashes
< form enctype="multipart/form-data" method="post" target="uploadFrame" action="<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}">
There are two problems here.
First, the \
is an escape character in JS strings. When you want to represent a \
in a JS string, you need to double-escape it: \\
. Easiest way would be using JSTL fn:replace
for this.
var jsVariable = "${fn:replace(javaVariable, '\\', '\\\\')}";
Second, you want send it as an URL parameter. The \
is an illegal character in URL parameter. You need to URL-encode it. Easiest way would be using Javascript's escape()
function for this.
var urlParameter = escape(jsVariable);
Summarized, the
oScript.text+= "'script':'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";
needs to be replaced by
oScript.text += "'script':"
+ "'${pageContext.request.contextPath}/uploadFile"
+ "?portletId=${portletId}"
+ "&remoteFolder=" + escape("${fn:replace(remoteFolder, '\\', '\\\\')}")
+ "',";
Alternatively, you can just use /
instead of \
as file path separator. This works perfectly in Windows as well. You don't need to escape them for use in strings, you however still need to URL-encode it.
oScript.text += "'script':"
+ "'${pageContext.request.contextPath}/uploadFile"
+ "?portletId=${portletId}"
+ "&remoteFolder=" + escape("${remoteFolder}")
+ "',";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With