2013-03-19 27 views
3

我想從我的GXT應用程序向jasper提供一個簡單的.gif圖像,以便生成Excel報告。將圖像參數從GWT/GXT傳遞到Jasper報告的問題

我遇到的問題是,在嘗試了很多選項後,我總是在服務器端獲取「java.lang.NullPointerException」。

我在我的碧玉報告如下代碼:

<parameter name="logo" class="java.lang.String"/> 
... 
     <image> 
      <reportElement uuid="2f9765a4-f1dc-4af4-9ddf-fae1c7a3d152" x="110" y="0" width="206" height="40"/> 
      <imageExpression><![CDATA[$P{logo}]]></imageExpression> 
     </image> 

和Java代碼:

FileResolver fileResolver = new FileResolver() { 

       @Override 
       public File resolveFile(String fileName) { 
        URI uri; 
        try { 
         uri = new URI(this.getClass().getResource(fileName).getPath()); 
         return new File(uri.getPath()); 
        } catch (URISyntaxException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
         return null; 
        } 
       } 
      }; 

      parameters.put("logo", fileResolver.resolveFile("logo.GIF")); 

我已經嘗試了幾種解決方案在那裏,並與所有這些問題。

logo.gif位於已編譯的GWT應用程序的.war文件夾中,其內容以.war格式存檔並部署在Tomcat 7.0服務器上。

希望有更多經驗的人會幫助我,讓我知道我做錯了什麼。

+0

是否拋出了'URISyntaxException'? – enrybo 2013-03-19 11:32:34

+0

不,這不是... – Eugen 2013-03-19 11:40:58

+0

當你說gif被放置在編譯的GWT應用程序的war文件中,它的放置位置是什麼?在客戶端模塊(其中包含所有生成的JS文件)或服務器模塊(其中存在servlet類)?請告訴GIF的路徑 – sanbhat 2013-03-27 09:40:02

回答

2

FileResolver對象應傳遞給碧玉是這樣的:

parameters.put("REPORT_FILE_RESOLVER", fileResolver); 

你不應該叫fileResolver.resolveFile()自己。 JasperReports本身將調用FileResolver方法。 This question看起來很像你的(也許你已經看到了它),它通過傳遞FileResolver作爲參數。

你可以在FileResolverhere找到更多的信息。此頁面提到從JasperReports 5.0.1開始已棄用FileResolver。如果您正在使用(或計劃使用)5.0.1+,則應嘗試使用JasperResportsContext。對於JasperReportsContext的使用示例,您可以參考this question

+0

感謝您的回答,但徽標沒有出現。在Jasper代碼中有什麼我想念的嗎? – Eugen 2013-03-19 12:23:00

+0

您是否在使用'<![CDATA [「logo.gif」]]>'? (在這種情況下,你不需要'') – enrybo 2013-03-19 12:47:01

+0

Yeap。我仍然收到一個空指針例外\t \t \t \t uri = new URI(this.getClass()。getResource(fileName).getPath()); – Eugen 2013-03-19 13:03:50

相關問題