Grails 1.3.5、SQL Server 2005、iReports 3.7.6、JasperPlugin1.1.3を使用しています。私のGSPページでは、jasperReprtタグを次のように指定しています。
<g:jasperReport jasper="report1" format="PDF">
<input type="hidden" name="test_id" id="test_id"/>
<input type="hidden" name="order_no" id="order_no" />
</g:jasperReport>
開発のために、Config.groovyで指定しました
jasper.dir.reports = './reports'
新しいレポートが作成および保存されるときに、reportsフォルダーに作成される2つのファイル、つまりreport.jrxmlとreport.jasperがあります。
IEまたはFirefoxでPDFアイコンをクリックすると、500サーバーエラーがスローされ、以下はスタックトレースです。
[2010-11-27 01:13:14.998] ERROR groovy.grails.web.errors.GrailsExceptionResolver Invalid byte 1 of 1-byte UTF-8 sequence.
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
at
しかし、を削除するreport1.jasper
と、PDFアイコンをクリックしてもエラーがスローされなくなり、PDFレポートが正常に表示されます。
これは正しい方法ですか?
私の2番目の問題は、サブレポートの使用に関するものです。サブレポートはメインレポートと同じフォルダにあります。ただし、アプリケーションからレポートを実行すると、次のエラーがスローされます。
[2010-11-27 01:30:27.556] ERROR groovy.grails.web.errors.GrailsExceptionResolver Could not load object from location : ./reports\report1sub_report.jasper net.sf.jasperreports.engine.JRException: Could not load object from location : ./reports\urine_routinepatient_details_sub_report.jasper at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLoader.java:262) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:301) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:327)
サブレポートが見つかりません。どうすれば修正できますか?
ありがとうございました。ジェイチャンドラン。
編集:
私はこの間ずっと検索してきましたが、それでも適切な解決策を見つけることができませんでした。だから私はいくつかの試行錯誤をしました。前に言ったように、レポートディレクトリを削除report1.jasper
してそのままにしておくと、問題なく機能することがわかりました。jasper.jrxml
サブレポートの問題の場合:エラーが発生していましCould not load object from location : ./reports\report1sub_report.jasper
た奇妙な理由で、メインレポート名report
が名前に追加され、名前の付いsub_report.jasper
たファイルを探していましたreport1sub_report.jasper
そこで、フォルダーの下にサブフォルダーを作成し、reports
名前を付けてreport1
report1.jrxmlファイルを更新しました。
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "\\sub_report.jasper"]]></subreportExpression>
\\
以下に示すように、「SUBREPORT_DIR」パラメーター\\
のパスの最後にスラッシュが含まれていても、余分なスラッシュを追加する必要がありました。
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["F:\\Workspace\\SpringSource2.5.0\\GrailsProjec\\reports\\report1\\"]]></defaultValueExpression>
</parameter>
最後にあることに注意してください\\
。なぜ追加されなかったのかわかりません!
別の方法は、サブレポート名をからsub_report.jasper
に変更することreport1sub_report.jasper
でした。:)
これを本番モードでテストしましたが、正常に動作します。これがそれを行う方法であるかどうかはわかりませんが、他のすべての可能な解決策は私にとってはうまくいきませんでした。
フィードバックは非常に役立ちます。