Как передать объект из отчета о рождении в HTML динамический c текст (макет) - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в BIRT в eclipse. Мне нужно передать объект со стороны BIRT в HTML Dynami c текст (в макете)

onFetch of dataSet

json = {Name: row["Name"],
        Lastname: row["Lastname"],
        Date: row["Date"]};

beforeClose of Dataset

reportContext.setPersistentGlobalVariable("json", json);

и динамически c Текст в макете

var str = <value-of>reportContext.getPersistentGlobalVariable("json")</value-of>;

У меня есть ошибка Uncaught SyntaxError: Неожиданный идентификатор

var str = [object Object];

Может ли кто-нибудь указать мне в правильном направлении? Есть идеи, как передать объект между отчетом о рождении и JavaScript (HTML)? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Вы можете передать объект из набора данных в Dynami c Текст, выполнив следующие шаги.

Шаг-1: Создайте переменную уровня отчета. Шаг 2: Внутри метода «Fetch» ​​просто создайте объект. [Как вы создали json объект]

vars["user"]={
    Name: row["Name"],
    Lastname: row["LastName"],
    Date: row["Date"]
 };

Шаг 3: при Close / beforeClose метод присвоить объект переменной [Как вы сделали] Шаг 4. Создайте текст HTML Dynami c в своем отчете Шаг 5: Получите доступ к атрибутам, как показано ниже -

vars["user"].Lastname

Я создал образец отчета. Вы можете сослаться сюда: - https://drive.google.com/file/d/1dlh4qmamGur7voaNnlgamFTOIpAMk3_f/view?usp=sharing

0 голосов
/ 28 мая 2020

Вы должны объяснить, чего вы пытаетесь достичь. Как вы думаете, почему вам нужно «передать объект в HTML динамический c текст»?

В BIRT есть два типа динамических c текстовых элементов, и, похоже, вы их смешиваете:

Dynami c Текстовый элемент: вы указываете значение как выражение Javascript, например «Hello world» или «Hello» + row [«NAME»], если в вашем наборе данных есть столбец NAME.

Текстовый элемент: вы указываете значение как HTML, например, Hello world или Hello row ["NAME"].

Это сопоставимо с Java сервлетами и Java серверными страницами, оба может делать то же самое, но по-разному.

И то, и другое требует, чтобы ваш элемент макета имел доступ к данным из набора данных. Обычно это достигается путем размещения элемента макета в элементе таблицы или элементе списка, который привязан к набору данных (см. Вкладку «Привязка» в свойствах).

Для простоты я рекомендую просто забыть о «Текстовом элементе» и всегда используйте «Dynami c Текстовый элемент».

Ваш синтаксис var str = ...; является нерабочей синтаксической смесью.

Внутри «Dynami c Text Item» вы, вероятно, имеете в виду

reportContext.getPersistentGlobalVariable («json»)

Это не даст вам SyntaxError, потому что это допустимое выражение JavaScript.

Но это не сработает так, как вы думаете. Он попытается отобразить объект JS как текст, вероятно, с результатом «[объект объекта]».

Обратите внимание, что скрипты в BIRT происходят внутри BIRT, а не в браузере.

Вы действительно хотите создать (с BIRT) страницу HTML, содержащую Javascript, где этот Javascript выполняется в браузере?

Никогда не пробовал, но это должно быть возможно:

Обязательно установите тип «Dynami c Text Item» на HTML и используйте такое выражение:

("<script type=\"text/javascript\">\n" +
 "alert('Hello world');\n" +
 "</script>\n"
)

или с помощью Dynami c content:

("<script type=\"text/javascript\">\n" +
 "alert('Hello " + row["NAME"] + "');\n" +
 "</script>\n"
)

Но это усложняется:

Чтобы передать JSON объекты таким образом (в отличие от простых строк, таких как row ["NAME"]), вам необходимо написать код, который записывает содержимое JSON как исходный текст Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...