2010-10-06 74 views
0

我有一個報告,這將需要文本塊(這將動態創建)從運行報告Java程序嵌入。BIRT如何插入文本動態

有沒有一種方法我可以把一個文本對象到設計,然後以某種方式得到認爲該對象在我的Java程序。如果這是可能的,我假設我能夠將文本插入到該文本對象中。

這是最好的方法嗎? 代碼片段會被感激地接受。

在此先感謝。

回答

2

您可以使用Java事件處理程序輕鬆完成此操作。生成過程中的任何事件都可以通過JavaScript(存儲在報告設計本身)或通過POJO進行修改,當需要更復雜的處理時。

添加TextItem到您的報告。這將成爲您的文本塊的預期目的地。您可以添加其他類型的控件並以相同的方式與它們交互,TextItem對於此特定問題似乎有意義。將任何你想要的東西添加到文本項目中,無論如何,我們都會重複從POJO中取得的值。

現在創建一個實現TextItemEventAdapter接口(這應該是在你的BIRT分佈)的POJO。然後您可以選擇將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

祝您好運!