Я пытаюсь создать отчет.В моем отчете у меня есть три вложенные таблицы, прикрепленные к трем различным наборам сценариев, которые называются «Родительская таблица» («Внешняя таблица»), «Внешняя таблица» (средняя таблица) и «Внутренняя таблица» («Внутренняя таблица»).Я могу успешно прочитать значение объекта pojo в моей внешней таблице и установить соответствующие значения datarow, включая объект списка JAVA.Но когда я пытаюсь прочитать этот объект списка JAVA в параметре набора данных моей средней таблицы, он ничего не получает.
Сначала я пытался добиться результатов, используя три вложенные таблицы, но это не сработало из-за упомянутой проблемы.выше, но затем я попытался упростить вложенные таблицы до 2 уровня.Я смог успешно прочитать значение datarow, которое представляло собой список JAVA во внутреннем параметре таблиц, а затем повторил его и смог сгенерировать отчет.Но я не знаю, что пошло не так, когда я пытаюсь добавить еще одну таблицу в эту вложенную структуру.
Чтение объекта JAVA в методе open внешней таблицы, например,
var reportDto = reportContext.getAppContext().get("reportDto");
parentReportsItr = reportDto.iterator();
УстановкаПодробное описание метода извлечения этой внешней таблицы, подобного следующемувкладка привязки в разделе макета.
После этого я попытался прочитать это значение в открытом методе средней таблицы следующим образом:
reportItr = inputParams["parentReportParam"].getReportList().iterator();
Но здесь на этом этапе я получаю исключение: Невозможно вызвать метод"getReportList" из null.
Я выполнил те же самые шаги для двух вложенных таблиц, и он смог прочитать значение, но не смог, когда попытался с тремя таблицами.и получает следующее исключение.
A BIRT exception occurred. See next exception for more information.
TypeError: Cannot call method "getReportList" of null (/report/data-sets/script-data-set[@id="219"]/method[@name="open"]#1)
org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_OPEN(). Source:
------
" + reportItr = inputParams["parentReportParam"].getReportList().iterator();
+ "
-----
A BIRT exception occurred. See next exception for more information.
TypeError: Cannot call method "getReportList" of null (/report/data-sets/script-data-set[@id="219"]/method[@name="open"]#1)
at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:147)
at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:90)
at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.handleJS(DataSetScriptExecutor.java:256)
at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleOpen(ScriptDataSetScriptExecutor.java:98)
at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.open(ScriptDataSetRuntime.java:80)