从控制器上,我打开了一个新窗口来调用Jasper报告。问题是,当我选择Excel格式时,新窗口(或选项卡取决于浏览器)是空的。一旦jasper/Excel打开,我想关闭这个窗口。我该如何关闭空白窗口?还是在这个新窗口中显示Excel报表?
请注意,对于任何其他文档类型(PDF、HTML等),报告将显示在新窗口/选项卡中,这是可以的。
下面是我代码的一部分:
reports.java (控制器)
Executions.getCurrent().sendRedirect("/app/rapport/displayReport.zul", "_blank");displayReport.zul
<zk>
<jasperreport id="report" hflex="1" height="100%" width="100%"/>
<zscript><![CDATA[
import org.cic.common.container.SessContext;
import org.cic.fwd.ServiceLocator;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
SessContext sessContext = ServiceLocator.getSessContext();
report.setSrc((String)sessContext.get("src"));
report.setDatasource((JRBeanCollectionDataSource)sessContext.get("datasource"));
report.setParameters((Map)sessContext.get("parameters"));
report.setType((String)sessContext.get("type"));
]]></zscript>
</zk>发布于 2014-12-24 02:09:45
目前,没有浏览器可以直接显示Excel文件,因为没有相应的插件。如果显示Excel不是您的优先事项。我有两个建议:
在您的控制器中,只需创建一个excel文件,让用户下载参考download
关闭displayReport.zul控制器中的窗口。public class ReportComposer extends SelectorComposer<Component> { .. @Override public void doFinally() throws Exception { super.doFinally(); Clients.evalJavaScript("window.close();"); } }
https://stackoverflow.com/questions/27107859
复制相似问题