我有一份报告,要求从运行报告的Java程序中嵌入大量文本(将动态创建)。
有没有办法可以将文本对象放入设计中,然后以某种方式在我的Java程序中获取该对象。如果可以的话,我假设我可以在该文本对象中插入文本。
这是最好的方法吗? 我们将非常感激地接受代码片段。
提前致谢。
答案 0 :(得分:2)
您可以使用Java事件处理程序轻松完成此操作。生成过程中的任何事件都可以通过JavaScript(存储在报表设计本身)或通过POJO进行修改,以便进行更复杂的处理。
将TextItem添加到报表中。这将是您的文本块的预定目的地。您可以添加其他类型的控件并以相同的方式与它们交互,TextItem似乎对这个特定问题有意义。在文本项中添加您想要的任何内容,无论如何我们都会覆盖POJO的值。
现在创建一个实现TextItemEventAdapter
接口的POJO(这应该在你的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
祝你好运!