【问题标题】:window.location and window.open problemwindow.location 和 window.open 问题
【发布时间】:2010-10-05 15:15:07
【问题描述】:

我似乎无法解决这个问题。

最初,JSP 代码在 Javascript 中有一个函数,可以从另一台服务器调用 jsp:

window.open("<%= otherServer %>/ourreports/Company/fooreport.jsp?index"+index,"Foo",options);

otherServer 是本地服务器 (http://192.168.4.40:8080) 这很好用,并且会弹出一个带有 fooreport.jsp 的新窗口。

现在的任务是指向同一个服务器中的一个jsp。 所以,我把它改成了

window.open("/reports/Company/fooreport.jsp?index"+index,"Foo", options);

我会得到一个下载文件弹出窗口而不是页面

我还尝试了以下所有操作:

window.location = "/reports/Company/fooreport.jsp?index="+index;
window.location.href = "/reports/Company/fooreport.jsp?index="+index;
window.location = "http://localhost:9080/reports/Company/fooreport.jsp?index="+index;
window.location.href = "http://localhost:9080/reports/Company/fooreport.jsp?index="+index;

我仍然会弹出将 fooreport.jsp 下载到我的计算机的弹出窗口。

jsp 格式正确,有 DOCTYPE、标签、

我使用的是 WebSphere 7.5.4,而 java 是 1.5

【问题讨论】:

  • JSP 尝试下载时的 MIME 类型(或只是 Content-type HTTP 标头)是什么?
  • 如果您在浏览器中键入地址,它们是否有效或仍然显示下载?另外,如果您下载文件,它是否会显示呈现的页面?还是带有&lt;%.. 的源代码?
  • fooreport.jsp?index"+index' 是错字吗?您应该在查询字符串键和值之间有一个=。如fooreport.jsp?index="+index'
  • @Robusto,这是一个错字,谢谢。 @Gaby,我从未下载过它,因为我会取消弹出窗口。 @Matt Ball,将检查 Content-Type 并让您知道。此外,同一文件夹中的另一个 jsp 工作正常,所以我知道它是那个特定 jsp 中的一些编码。
  • WebSphere 7.5.4?我认为您的意思是 Rational Application Developer,因为 WAS 的最新版本是 7.0.0.11

标签: java javascript jsp websphere


【解决方案1】:

如果响应的Content-Disposition 标头设置为Attachmentwindow.location 应该可以工作。

response.setHeader("Content-Disposition", "attachment; filename=yourfile.ext");

应该注意的是,在 JSP 中执行此操作是一个坏主意。如果响应涉及二进制数据,JSP 可能会破坏它。在 Servlet 中完成这项工作。 JSP是用来写模板文本的,not用来写Java代码。

【讨论】:

  • 是的,我知道...不幸的是,我正在更新 4 年前的代码,其中 Servlet 只是调用 JSP...您猜对了...所有代码都在 标签。最终响应是一个加载 Crystal Report .rpt 的 JSP
  • 只要是基于文本的,不一定是数据畸形,不是。但是设置内容配置对您有用吗?
【解决方案2】:

问题出在 JSP 中。 使用 window.location 和 window.open 的调用对其他 JSP 来说效果很好。

问题出在“

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 2014-11-25
    • 2011-07-13
    • 2014-12-30
    • 2019-08-10
    • 1970-01-01
    • 2011-04-07
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多