在使用JSON数据在Java中生成jasper报告时,发生以下错误。
The supplied java.sql.Connection object is null
我知道它需要连接,但是我正在使用JSON数据填充报告。这是我的代码
InputStream inputStream = classLoader.getResourceAsStream("filepath");
InputStream iostream = new ByteArrayInputStream(json.toString().getBytes(StandardCharsets.UTF_8));
JasperReport jasperReport;
JasperPrint jasperPrint;
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("AMOUNT", json.getString("AMOUNT"));
parameters.put("CGST", json.getString("CGST"));
parameters.put("IGST", json.getString("IGST"));
parameters.put(JsonQueryExecuterFactory.JSON_INPUT_STREAM, iostream);
ByteArrayOutputStream pdfReport = new ByteArrayOutputStream();
try {
jasperReport = JasperCompileManager.compileReport(inputStream);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(pdfReport));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();
} catch (JRException e) {
e.printStackTrace();
}
当我尝试填写报告时,它给出了错误。我已经制作了 JSON_INPUT_STREAM 并通过了地图。不知道如何通过连接。有帮助吗? 预先感谢
答案 0 :(得分:0)
如果您还发布jrxml文件,将会更容易。 但是,从理论上讲,您必须选择:
首先,查看是否在jrxml文件中使用了参数REPORT_CONNECTION(或类似的参数,这是jasper在创建新报表时创建的默认参数)。
现在:
如果您不需要这样做,因为您没有直接从bd获取任何内容,请修复jrxml中的代码。
如果确实需要,请使用类似的方式发送它:
Connection conn;
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection (connection_url, user, password);
......[your code]
jasperReport = JasperCompileManager.compileReport(inputStream);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
......
} catch (Exception ex) {}