java ireport передавая json как выражение
Я следую этому руководству, чтобы передать JSON JRXML. мой фиктивный JSON файл разбирается в хорошо выглядящий отчет.
но у меня проблемы при передаче кода JSON в JRXML. в этом уроке есть конфигурация как на картинке ниже
я пытался передать JSON, как это
Map<String,Object> params = new HashMap<String,Object>();
String sPath = "/reports/master_standar_test_kertas.jrxml";
URL uReport = this.getClass().getResource(sPath);
String sJson = "{\"parameter\": { \"status\":\"success\" },\"data\":[{\"kode\":\"001\",\"title\":\"ENAMEL\"}]}";
System.out.println((new JSONObject(sJson)));
InputStream is = new ByteArrayInputStream(sJson.getBytes());
JsonDataSource source = new JsonDataSource(is);
params.put(JsonQueryExecuterFactory.JSON_SOURCE, is);
JasperReport jr = JasperCompileManager.compileReport(uReport.getPath());
JasperPrint jpPrint = JasperFillManager.fillReport(jr, params,source);
JasperViewer jpView = new JasperViewer(jpPrint);
но я получил ошибку
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $P{net.sf.jasperreports.json.source}
мой вопрос:
- Я уверен, что мой код неправильный, но я не знаю точный неправильный код
- Я действительно хочу понять, как работает jasperreport, но я новичок в Java, что я могу прочитать в любом уроке?
2 ответа
Вместо этого я бы попытался установить параметр JsonQueryExecuterFactory.JSON_INPUT_STREAM, так как он кажется именно тем, что вам нужно. Параметр JsonQueryExecuterFactory.JSON_SOURCE может быть только:
- ресурс на пути к классам
- файл из файловой системы с абсолютным или относительным путем
- URL
Большинство ресурсов для ознакомления с JasperReports можно найти на веб-сайте сообщества Jaspersoft. Вы можете найти полезным:
- JasperReports Ultimate Руководство
- Вики или раздел ответов
Для проблемы, которую я получил, у меня есть собственное решение, возможно, кому-то тоже нужно решение.
этот код
params.put(JsonQueryExecuterFactory.JSON_SOURCE, is);
я заменил на
params.put(JsonQueryExecuterFactory.JSON_SOURCE, "/path/to/file.json");
или заменен ответом http-сервера
params.put(JsonQueryExecuterFactory.JSON_SOURCE, "htttp://localhost:12345/data.json");