BIRT как динамически вставлять текст

У меня есть отчет, который потребует встраивания фрагментов текста (которые будут создаваться динамически) из программы Java, запускающей отчет.

Есть ли способ поместить текстовый объект в дизайн, а затем каким-то образом удержать этот объект в моей программе на Java. Если это возможно, я предполагаю, что смогу вставить текст в этот текстовый объект.

Это лучший способ сделать это? Фрагмент кода будет с благодарностью принят.

Заранее спасибо.


person Dan    schedule 06.10.2010    source источник


Ответы (1)


Вы можете легко сделать это с помощью обработчиков событий Java. Любое событие в процессе генерации может быть изменено либо с помощью JavaScript (хранящегося в самом дизайне отчета), либо с помощью POJO, когда требуется более сложная обработка.

Добавьте TextItem в свой отчет. Это будет предполагаемое место назначения вашего блока текста. Вы можете добавлять другие типы элементов управления и взаимодействовать с ними таким же образом, TextItem, кажется, имеет смысл для этого конкретного вопроса. Добавьте к текстовому элементу все, что хотите, мы все равно переопределим значение из POJO.

Теперь создайте POJO, реализующий интерфейс TextItemEventAdapter (он должен быть в вашем дистрибутиве BIRT). Затем вы можете выбрать, к какому событию привязать ваш POJO. onCreate, вероятно, имеет наибольший смысл. Для этого реализуйте метод onCreate из интерфейса.

/* (non-Javadoc)
 * @see org.eclipse.birt.report.engine.api.script.eventadapter.TextItemEventAdapter#onCreate(org.eclipse.birt.report.engine.api.script.instance.ITextItemInstance, org.eclipse.birt.report.engine.api.script.IReportContext)
 */
@Override
public void onCreate(ITextItemInstance text, IReportContext reportContext) {
    super.onCreate(text, reportContext);
    text.setText(getText());
}

В приведенном выше фрагменте метод getText() - это еще один метод вашего класса, который создает ваш текстовый блок. Реализуйте здесь свою бизнес-логику.

После создания класса вам необходимо привязать его к элементу управления текстовым элементом отчета. В отчете выберите текстовый элемент. В разделе «Свойства» найдите «Обработчик событий». Здесь вы можете добавить свой POJO в качестве обработчика событий для элемента управления. Когда элемент управления отрисован, ваш POJO теперь предоставит текст.

Чтобы упростить разработку, разместите свой проект Java и проект BIRT в одной рабочей области. Это позволит отчету и POJO видеть друг друга, обеспечивая тестирование и отладку внутри Eclipse.

Вот еще много дополнительных сведений о событиях отчетов и обработке событий: http://www.eclipse.org/birt/phoenix/deploy/reportScripting.php

Удачи!

person MystikSpiral    schedule 07.10.2010