【发布时间】:2011-03-16 19:15:43
【问题描述】:
这是我在此处回答上一个问题后出现的错误。本质上,我试图随身携带文件夹的 absPath,这样我就可以在运行时制作一些文件,而不管我的代码位于何处。我被推荐使用
getServletContext().getRealPath("/");
要找到正确的路径。
我在我的 JSP 页面中尝试过,但是当我创建 absPath 变量时,我得到了一个未终止的字符串文字。这是我尝试运行的脚本。
<script type="text/javascript">
var RemoteUserId = "<%=(request.getRemoteUser()==null)? "blah" : request.getRemoteUser()%>";
var contextPath = "<%= request.getContextPath()%>";
var extPath = "<%=extPath%>";
var absPath = "<%=getServletContext().getRealPath("/")%>";
var env='<%=string1%>';
</script>
我错过了什么?我是否必须转义返回的路径名,或者我是否误解了我应该使用它的时候。
编辑**
这是源在访问页面时显示的内容
(稍作调整,因此我没有显示完整的 C: 路径)
<script type="text/javascript">
var RemoteUserId = "blah";
var contextPath = "/TRACK";
var extPath = "http://xxx/sales/it/tlp/ext-3.2.1";
var env='null';
var absPath = "C:\Documents and Settings...\TRACK\";
</script>
【问题讨论】:
-
生成的输出是什么?右键页面,查看源码。另外,为什么需要这个作为 JS 变量?为什么不在服务器端确定呢?我看不出这些信息对 JS/客户端有什么用,因为它无论如何都无法访问它。
-
我猜是因为我不确定如何设置服务器端。这个项目非常大,我不确定我需要添加什么,以便我可以从一个类启动服务器,而不是仅仅从服务器视图启动 Tomcat。我打算将此路径传递给 ajax 请求(因为我们已经从框架设置中完成了),然后我可以在 java 端访问它。
-
请求进来后在Java端访问即可。
-
我能看一下这个的sn-p代码吗?或者一个例子的链接。使用框架的设置方式,请求是通过来自 Ext-JS 的 ajax 请求传递的......我需要用参数填充(比如这个 absPath)。
-
不清楚功能要求是什么以及您正在使用什么框架,这使得您无法在应该处理此请求的 Java 代码中仅使用
ServletContext#getRealPath()。顺便说一句,您的问题是由反斜杠引起的。它们也是 JS 字符串中的转义字符。但毕竟,您真的不需要将 Java 变量作为 JS 变量传递回 Java,而您可以在 Java 端本身访问它。
标签: javascript relative-path servlets