PrintWriter out = response.getWriter();
out.print("<script>");
out.print("window.open('http://chfdsd/manu/zseriessection9.pdf','_blank')");
out.print("</script>");
此代码段位于struts的动作类中。我正在使用它在新窗口中重定向到URL。但是,执行此脚本后,父窗口不应更改。但事实并非如此。请帮忙!
答案 0 :(得分:0)
这是因为您正在向服务器执行直接请求。服务器响应就是那段将在您的浏览器客户端中编写的硬编码JavaScript。如果您查看空白页的源代码,您将看到该代码:
<script>
window.open('http://chfdsd/manu/zseriessection9.pdf','_blank')
</script>
所以它没有显示空白页,只是没有要显示HTML组件的响应。
要解决您的问题,您有一些选择:
在新页面/选项卡中执行此请求,然后servlet请求返回重定向到所需页面/内容。例如:
<form action="${request.contextPath}/path/to/Servlet" target="blank">
<!-- your form components... -->
</form>
在你的Servlet中:
response.redirect("http://chfdsd/manu/zseriessection9.pdf");
//no need to use PrintWriter at all
执行ajax请求,返回要导航的URL。然后,处理ajax响应以在新页面中导航到此URL。使用jquery:
$.post("${request.contextPath}/path/to/Servlet", function(response) {
window.open(response, 'blank');
});
然后在你的servlet中:
PrintWriter out = response.getWriter();
out.print("http://chfdsd/manu/zseriessection9.pdf");
请注意,有更多优雅的解决方案,但其中任何一个都可以。