2014-11-24 53 views
0

從控制器中,我打開一個新窗口來調用Jasper報告。當我選擇Excel格式時,新窗口(或選項卡取決於您的瀏覽器)是空白的問題。我想在jasper/Excel打開後關閉此窗口。我應該如何繼續關閉空白窗口?或者在這個新窗口中顯示Excel報告?用ZK和Jasper關閉Excel窗口報告

請注意,對於任何其他文檔類型(PDF,HTML等),報表將顯示在新窗口/選項卡中,這是正常的。

這裏是我的代碼部分:

reports.java(DC型)

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> 

回答

0

目前,還沒有瀏覽器,可以顯示一個Excel文件,因爲沒有相應的插件。如果顯示Excel不是您的首選。我有2點建議:

  1. 讓用戶下載Excel中,而無需打開新窗口

在你的控制器,只需創建一個Excel文件,讓用戶下載 參考http://www.zkoss.org/zkdemo/file_handling/file_download

  • 用JS關閉新窗口
  • 關閉在控制器中的displayReport.zul窗口。 public class ReportComposer extends SelectorComposer<Component> { .. @Override public void doFinally() throws Exception { super.doFinally(); Clients.evalJavaScript("window.close();"); } }