2010-09-15 43 views
0

我正在使用Jasper報告的系統上工作。最近它開始拋出這個錯誤:ConversionException:Jasper報告中的可解析日期

org.apache.commons.beanutils.ConversionException: Unparseable date: "03/03/1981" 
     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:69) 
     at net.sf.jasperreports.engine.data.JRXmlDataSource.getFieldValue(JRXmlDataSource.java:313) 
     at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:823) 
     at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:787) 
     at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1478) 
     at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:125) 
     at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:942) 
     at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860) 
     at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) 
     at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) 
     at XmlJasperInterface.report(XmlJasperInterface.java:89) 
     at XmlJasperInterface.main(XmlJasperInterface.java:63) 
Caused by: java.text.ParseException: Unparseable date: "03/03/1981" 
     at java.text.DateFormat.parse(DateFormat.java:337) 
     at net.sf.jasperreports.engine.util.JRDateLocaleConverter.parse(JRDateLocaleConverter.java:84) 
     at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:232) 
     ... 13 more 

我不知道是什麼導致了它。我們最近還升級了Jasper報告,但是我記得它在升級後正在運行。

我發現名爲BeanUtils, Digester, and Type Conversion博客文章,其指向添加這些行:

String pattern = "MM/dd/yyyy"; 
Locale locale = Locale.getDefault(); 
DateLocaleConverter converter = new DateLocaleConverter(locale, pattern); 
converter.setLenient(true); 
ConvertUtils.register(converter, java.util.Date.class); 

但他們什麼也沒有改變。我仍然得到同樣的錯誤。

觸發錯誤線是這個:

jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JRXmlDataSource(System.in, selectCriteria)); 

感謝。

更新:將Jasper Reports降級到1.1.0使其重新工作,所以最有可能是升級破壞了它。

+0

什麼是你的區域設置?對於「MM/dd/yyyy」模式,我會使用Locale.US而不是Locale.getDefault,它會爲您提供當前的OS語言環境。 – 2010-09-15 17:32:44

+0

Pawel,我的語言環境是de_CH,但即使將日期寫爲d.m.yyyy也沒有幫助。我試過所有主要的日期格式,沒有任何工作。 – Pablo 2010-09-16 06:41:30

回答

2

您需要在您的數據源設置一個日期模式,如:

JRXmlDataSource datasource = new JRXmlDataSource(....); 
datasource.setDatePattern("MM/dd/yyyy"); 
+0

你能提供一些你的答案背後的「爲什麼」嗎?日期得到解釋不正確的字符串,直到他爲它創建一個數據源? – OrwellHindenberg 2014-07-10 14:48:01