3

単純な.gif画像をGXTアプリケーションからjasperにフィードして、Excelレポートを生成しようとしています。

私が抱えている問題は、多数のオプションを試した後、サーバー側で常に「java.lang.NullPointerException」が発生することです。

Jasperレポートに次のコードがあります。

    <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としてアーカイブされ、Tomcat7.0サーバーにデプロイされます。

うまくいけば、もう少し経験のある人が私を助けてくれて、私が間違っていることを教えてくれます。

4

1 に答える 1

2

FileResolverオブジェクトは、次のように Jasper に渡す必要があります。

parameters.put("REPORT_FILE_RESOLVER", fileResolver);

自称してはいけませんfileResolver.resolveFile()。メソッドの呼び出しはFileResolver、JasperReports 自体によって行われます。この質問はあなたの質問によく似ており (見たことがあるかもしれません)、 をFileResolverパラメーターとして渡すことで機能します。

詳細については、FileResolver こちらを参照してください。FileResolverこのページでは、JasperReports 5.0.1 の時点で非推奨になっていることについて言及しています。5.0.1+ を使用している (または使用する予定がある) 場合は、 を使用してみてくださいJasperResportsContext。あなたの使用例については、この質問JasperReportsContextを参照してください。

于 2013-03-19T12:03:36.693 に答える