Jump to content
We've recently updated our Privacy Statement, available here ×

ClassCastException


Recommended Posts

By: Michael Mai - mmai

ClassCastException

2003-05-29 15:06

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"/>

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...