2016-02-29 41 views
1

我創建了一組使用在我的BIRT報告中的utils。如何從BIRT上的類路徑自動加載JS文件

我把他們(我-utils.jar)BIRT的lib目錄裏:

BIRT_HOME\plugins\org.eclipse.birt.report.viewer_x.x.x.x\birt\scriptlib 

它們工作正常,但現在我想創建一個JS文件,把它放在classpath中能夠使用它的功能。

// my-utils.js 
GLOBAL_VARIABLE = { 
    formatSomething: funnction(value) { 
     // do my stuff with 'value' and return 
    } 
}; 

我想直接使用它,沒有明確地加載一個動態文本或腳本事件中,像這樣:

GLOBAL_VARIABLE.formatSomething('bla bla bla') 

我怎樣才能做到這一點?

回答

1

您想創建一個擴展點。在Eclipse中,創建一個新的空白插件項目,然後添加此擴展點:

org.eclipse.birt.core.ScriptFunctionService 

剛下項目根創建一個文件夾,將其命名爲實例「jslib」,並把你的JS此文件夾中的文件。 編輯plugin.xml中並添加JSLib標籤,所以它應該是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.4"?> 
<plugin> 
    <extension 
     id="my.js.function" 
     name="My custom JS functions" 
     point="org.eclipse.birt.core.ScriptFunctionService"> 
    </extension> 
    <JSLib 
     location="jslib"> 
    </JSLib> 

</plugin> 

導出插件作爲一個罐子,在Eclipse和/或Web應用程序與你的JS功能部署它應該可用。有關定製birt功能的更多信息here

+0

你能提供一個可行的例子嗎? –

0

請注意,Dominique的解決方案僅適用於使用Java實現功能的情況。

下面的解決方案是,當功能被使用JavaScript實現的情況下:

首先,你不需要到** * JS文件添加到類路徑。 而是將它們放到爲資源指定的目錄中,並在報告中(或在您的報告中使用的某個庫中)引用它們。請看下面的例子:

目錄結構:

workspace 
    \birt # I have this configured as as "Report Project" in the WS 
     my_report.rptdesign 
    \res 
     my-utils.js 

在首選項菜單: 報表設計/資源/資源文件夾= <當前項目文件夾>/RES

(在運行時,你可以使用API​​設置資源文件夾,我不知道如何配置這個Web Viewer例子)

在my_report.rptdesign中,查看報告的屬性itse如果。在「資源」選項卡中,將my-utils.js添加到Javascript文件。

現在,您可以在報告中使用庫的功能。

+0

獎金問題(我沒有解決方案):我想從一個* .js文件中包含其他* .js文件(您知道,比如require.js)。 BIRT似乎不可能,但這只是一個小小的缺陷。 – hvb

相關問題