2017-01-03 22 views
0

JasperReportでレポートを作成するためにJSONデータソースを使用しています。 inside iReportフィールドはIntegerとして宣言されます。このフィールドは、他のフィールドの中で行内で使用されます。JSONデータソースのオプションフィールドJasperReports

入力JSON例:

[{ 
    "dateFrom": "01.12.2016", 
    "dateTo": "01.12.2016", 
    "someOptionalNumber": 12 
}, 
{ 
    "dateFrom": "01.12.2016", 
    "dateTo": "01.12.2016" 
}, { 
    "dateFrom": "01.12.2016", 
    "dateTo": "01.12.2016", 
    "someOptionalNumber": 11 
}] 

フィールド宣言:

<field name="someOptionalNumber" class="java.lang.Integer"/> 

問題は、入力JSON someOptionalNumberに任意であり、そのようにすべての行に存在しないことです。フィールドをオプションにすることはできますか?

私は、このようなJSONを実行すると、私はこのエラーを取得:net.sf.jasperreports.engine.JRException:によって引き起こさ

フィールドの値を取得できません「someOptionalNumber」クラス「にjava.lang.Integer」の

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[JRException: Unable to get value for field 'someOptionalNumber' of class 'java.lang.Integer']] 
... 
Caused by: net.sf.jasperreports.engine.JRException: Unable to get value for field 'someOptionalNumber' of class 'java.lang.Integer' 
    at net.sf.jasperreports.engine.data.JsonDataSource.getFieldValue(JsonDataSource.java:241) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1358) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1259) 
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1235) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1588) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:149) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:939) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:871) 
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114) 
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969) 
    at reporting.engine.ReportEngine$.reporting$engine$ReportEngine$$createPDF(ReportEngine.scala:64) 
... 
Caused by: org.apache.commons.beanutils.ConversionException: Unparseable number: "" 
    at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:241) 
    at org.apache.commons.beanutils.locale.LocaleConvertUtilsBean.convert(LocaleConvertUtilsBean.java:285) 
    at net.sf.jasperreports.engine.data.JRAbstractTextDataSource.convertStringValue(JRAbstractTextDataSource.java:70) 
    at net.sf.jasperreports.engine.data.JsonDataSource.getFieldValue(JsonDataSource.java:231) 
    ... 49 common frames omitted 
Caused by: java.text.ParseException: Unparseable number: "" 
    at java.text.NumberFormat.parse(NumberFormat.java:385) 
    at org.apache.commons.beanutils.locale.converters.DecimalLocaleConverter.parse(DecimalLocaleConverter.java:253) 
    at org.apache.commons.beanutils.locale.converters.IntegerLocaleConverter.parse(IntegerLocaleConverter.java:218) 
    at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:232) 
+0

を推薦して、オプションのフィールドが存在することはできません、問題を解決しました。フィールドのいずれかがNULL値を持つことができます。しかし、オプションはサポートできません。 – Viki888

+0

JSONプロパティが見つからない場合はいつでも 'null'値が表示されるはずです。 エラーは、数値が予想されたときにエンジンが空の文字列を検出したことを示します。これは、JSONがそのプロパティに対して一貫しない可能性があることを意味します。これが正しく動作するようにJSONデータを修正する必要があるかもしれません。 – Narcis

+1

どのJasperReportsバージョンを使用していますか?この問題は、JasperReports 6.0以降のhttp://community.jaspersoft.com/jasperreportsr-library/issues/3742で修正されている可能性があります。 – dada67

答えて

0

私は、最新バージョン(6.3.1)にアップグレードし、JasperReportsの5.5.1のバージョンを使用していたがdada67は碧玉レポートでは

関連する問題