BIRT Отчетность |Невозможно привязать параметр внутренней таблицы к значению строки данных внешней таблицы - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь создать отчет.В моем отчете у меня есть три вложенные таблицы, прикрепленные к трем различным наборам сценариев, которые называются «Родительская таблица» («Внешняя таблица»), «Внешняя таблица» (средняя таблица) и «Внутренняя таблица» («Внутренняя таблица»).Я могу успешно прочитать значение объекта 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)
...