我必须将多个列表数据导出到多个pdf文件。代码如下所示:
public void prinReport(String reportType){
String reportPath ="",fileName="";
List<LoanDisplayModel> loanDisplayModelList=new ArrayList<>();
Map<String, Object> params = new HashMap();
if(reportType.equals("Sanchipta")){
reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath
("/reports/np/report1.jasper");
loanDisplayModelList=loanSanchipitaModelList;
fileName="reportOne.pdf";
}
else if(reportType.equals("Bistrit")){
reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath
("/reports/np/report2.jasper");
loanDisplayModelList=loanBistritModelList;
fileName="reportTwo.pdf";
}
else{
reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath
("/reports/np/report3.jasper");
loanDisplayModelList=loanSahaBistritModelList;
fileName="reportThree.pdf";
}
JasperPrint jasperPrint;
try {
jasperPrint = JasperFillManager.fillReport(reportPath, params,new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(
loanDisplayModelList));
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.setContentType("application/x-download");
httpServletResponse.addHeader("Content-disposition", "inline; filename="+fileName+"");
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
以上代码用于将列表导出为pdf文件。使用httpServletResponse.setContentType("application/x-download");
下载pdf文件。
对于单个列表,代码可以完美运行。但是我有三个不同的列表,单击一次按钮就必须将列表导出到不同的pdf文件。
按钮单击代码如下:
<h:commandButton value="Export" actionListener="#{closingMB.setReports}" id="cmdExport" ajax="false"/>
actionListener调用setReports()函数,在该函数中设置了三个不同的列表,然后调用了printReport()函数,并将reportType作为参数。 文件名,reportPath和loanDisplayModelList是根据reportType设置的。现在我面临一个问题,即仅将最后一个列表导出到pdf文件并下载,并且不导出初始pdf文件,并且将FileName设置为reportOne.pdf,即第一个fileName。
注意:我需要三个具有不同文件名的不同pdf文件。
有人可以帮我解决这个问题。