我创建了一个加载 JR 报告的程序。我在报告上放置了一个参数,以便每当加载报告时,它都会要求一个值。当我在我的java程序上传递一个参数时它工作正常
Map parameters = new HashMap();
parameters.put("VoucherNo", oclsJVHeader.getJournalVoucherNo());
...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
但是当我尝试在没有参数的情况下加载它时,
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
它说“该文档没有页面”。我在想,因为我让参数在我的代码不传递参数时使用提示,所以当我加载它时它会要求提示。
<parameter name="VoucherNo" class="java.lang.String" isForPrompting="true">
所以我的问题是,当我不传递参数时,如何让报告提示输入值?我需要为此更改我的java代码吗?
顺便说一句,这是我加载报告的代码:
FileInputStream fs = new FileInputStream(reportPath+reportFile);
JasperDesign jasperDesign = JRXmlLoader.load(fs);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); //could be null or parameters
JFrame jframe = new JFrame("Journal Voucher");
jframe.getContentPane().add(new JRViewer(jasperPrint));
jframe.pack();
jframe.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
jframe.setVisible(true);
我正在为我的项目使用iReport和NetBeans。