2002 JI Open Discussion Posted August 18, 2006 Share Posted August 18, 2006 By: Michael Mai - mmai ClassCastException 2003-05-29 14:05 Hi, I am tring to display report in PDF format and I am using datasource. I got the following error. If I used QueryString instead of datasource, it works fine and I do not have any caculation. Thank in advance. mm ################################### JasperReports encountered this error : java.lang.ClassCastException: java.lang.String at WebappReport.evaluate(WebappReport.java:130) at dori.jasper.engine.fill.JRCalculator.evaluate(JRCalculator.java:678) at dori.jasper.engine.fill.JRCalculator.evaluate(JRCalculator.java:614) at dori.jasper.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:342) at dori.jasper.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:329) at dori.jasper.engine.fill.JRFillBand.evaluate(JRFillBand.java:360) at dori.jasper.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:305) at dori.jasper.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:245) at dori.jasper.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:160) at dori.jasper.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:463) at dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:143) at dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:348) at dori.jasper.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:314) at com.chase.ccs.web.AwardReportServlet.service(AwardReportServlet.java:184) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:262) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:198) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2637) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2359) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120) NESTED BY : dori.jasper.engine.JRException: Error evaluating expression value : textField_2 at dori.jasper.engine.fill.JRCalculator.evaluate(JRCalculator.java:685) at dori.jasper.engine.fill.JRCalculator.evaluate(JRCalculator.java:614) ####################################### Here are my codes: File sourceFile = new File("/bea/wlserver6.1/reports/WebappReport.jasper"); Map parameters = new HashMap(); parameters.put("ReportTitle", "Employees Report"); parameters.put("FilterClause", "tcs_name_lookup like 'Mai%'"); parameters.put("OrderClause", "order by tcs_name_lookup"); parameters.put("logo", "/bea/wlserver6.1/reports/logo.gif"); byte[] bytes = null; try { JasperReport jr = (JasperReport)JRLoader.loadObject(sourceFile); bytes = JasperRunManager.runReportToPdf( jr, parameters, // getConnection() new AwardReportDataSource() ); } ######################### AwardReportDataSource.java public AwardReportDataSource() throws DAOException { logger.debug("Enterring " + this.getClass().getName() + "...."); String sql = "SELECT eid, tcs_name_lookup, hiredate FROM ncntv.tblemployees WHERE tcs_name_lookup like 'Mai%' order by tcs_name_lookup"; CreateEJBConnection ejbConn = new CreateEJBConnection(); DAO dao = ejbConn.getDAO(); try { dataArray = dao.executeQuery(sql); int i = 0; for (java.util.Iterator k = dataArray.iterator(); k.hasNext(); ) { String tmp[] = (String[]) k.next(); System.out.println("Tmp length: " + tmp.length); for (int j = 0; j < tmp.length; j++) { data[j] = tmp[j]; } i++; } } catch (DAOException e) { logger.error("Exec SP failed, DAO Exception: " + e, e); } catch (RemoteException e) { logger.error("Exec SP failed, Remote Exception: " + e, e); } catch (Exception e) { logger.error("Exec Query failed, Exception: " + e, e); } } /** * */ public boolean next() throws JRException { index++; System.out.println("Data length: " + data.length); return (index < data.length); } /** * */ public Object getFieldValue(JRField field) throws JRException { Object value = null; String fieldName = field.getName(); if ("eid".equals(fieldName)) { value = data[index][0]; System.out.println("value: " + (String)value); } else if ("tcs_name_lookup".equals(fieldName)) { value = data[index][1]; } else if ("hiredate".equals(fieldName)) { value = data[index][2]; } return value; } ############################## This is my xml <reportFont name="Arial_Normal" isDefault="true" fontName="Arial" size="12" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <reportFont name="Arial_Bold" isDefault="false" fontName="Arial" size="12" isBold="true" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <reportFont name="Arial_Italic" isDefault="false" fontName="Arial" size="12" isItalic="true" pdfFontName="Helvetica-Oblique" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <parameter name="ReportTitle" class="java.lang.String"/> <parameter name="FilterClause" class="java.lang.String"/> <parameter name="OrderClause" class="java.lang.String"/> <parameter name="BaseDir" class="java.io.File"/> <parameter name="logo" class="java.lang.String"/> <!-- <queryString><![CDATA[sELECT * FROM ncntv.tblemployees WHERE $P!{FilterClause} $P!{OrderClause}]]></queryString> --> <!-- <field name="eid" class="java.lang.Long"/> --> <field name="tcs_name_lookup" class="java.lang.String"/> <field name="hiredate" class="java.util.Date"/> By: Gregory A. Swarthout - gswarthout RE: ClassCastException 2003-05-29 14:49 getFieldValue() is returning a String for every field, but you've indicated your hiredate field is a java.util.Date. I believe that is your ClassCastException. By: Michael Mai - mmai RE: ClassCastException 2003-05-29 15:27 Thank you Gregory! The weird thing was before I posted the msg, I did comment out the hiredate from my report.xml and I still got the same error msg. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now