我的execute中有一段代码:
...
Map<String,String> parameters = new HashMap<String,String>();
InputStream in = getClass().getResourceAsStream("/reports/create.jasper");
ServletOutputStream ServletOutputStream out=response.getOutputStream();
JasperRunManager.runReportToPdfStream(in,out,parameters, rds);
...
//return (mapping.findForward("success"));不能使用,只能返回null。
return null;rds实现了Jasper的数据接口JRDataSource。这里使用了JasperReport组件生成pdf文件,发送到客户端。发送后,IE显示嵌入的pdf文件。但是IE的Back按钮无效。无法回退到上一页进行其他操作,只能关闭IE。我想怎样才能在点“提交”后,自动打开另一个IE,显示PDF,本IE窗口可以使用return (mapping.findForward("success"));返回。
...
Map<String,String> parameters = new HashMap<String,String>();
InputStream in = getClass().getResourceAsStream("/reports/create.jasper");
ServletOutputStream ServletOutputStream out=response.getOutputStream();
JasperRunManager.runReportToPdfStream(in,out,parameters, rds);
...
//return (mapping.findForward("success"));不能使用,只能返回null。
return null;rds实现了Jasper的数据接口JRDataSource。这里使用了JasperReport组件生成pdf文件,发送到客户端。发送后,IE显示嵌入的pdf文件。但是IE的Back按钮无效。无法回退到上一页进行其他操作,只能关闭IE。我想怎样才能在点“提交”后,自动打开另一个IE,显示PDF,本IE窗口可以使用return (mapping.findForward("success"));返回。
能说具体点吗?我对struts一知半解。
<html:submit onclick="oepnpdfwindows()">提交</html:submit>
Javascript怎么写?
具体在服务器端怎么处理?
你不要在a.jsp中直接进入action
而是在点击提交按钮(你以前的提交按钮)时,利用javascript开一个新窗口。window.open,打开x.do(action的路径),这是完全的html,如果不清楚这个用法,在baidu找一下。
然后在b.jsp中,进入action.
按照你问的情况,问题应该可以解决了。
我有两个页面:create.jsp - finish.jsp
我在create.jsp提交时,在finish.jsp页面中加入:
<script type="text/javascript">
<!--
function pdfwindow(){
window.open("report.do", "_blank", "top=0,left=0,width="+
screen.availWidth+",height="+screen.availHeight+
",toolbar=yes,menubar=yes,scrollbars=yes,location=yes,resizable=yes,status=yes");
}
//-->
</script>
这样当打开finish.jsp页面时,另一个窗口请求report.do,实现了我的要求。这里写详细一点,给有类似问题的朋友以提示。