当前位置: 首页 > 知识库问答 >
问题:

如何在向jasper报告传递日期参数时解决ClassCastException?

舒博雅
2023-03-14

我在derby数据库上有一个带有日期参数的报告,当通过两个文本字段发送日期以运行i时,我收到了下面的消息,得到了下面的报价错误消息。

线程“AWT-EventQueue-0”中出现异常Java . lang . classcastexception:Java . lang . string不能转换为net . SF . jasperreports . engine . query . jrjdbcqueryexecuter . setdate处的Java . util . date(jrjdbcqueryexecuter . Java:615)

我调用 jasper 报告的代码在这里:

public void runREport() {
   try {     
       Connection con1= null;

       String Op=jTsubmain_no.getText();
       int val = Integer.parseInt((String) Op.trim());
       Map param1 = new HashMap();
       param1.put("sub_no",val);
       param1.put("fdate",jTfdate.getText());
       param1.put("ldate",jTldate.getText());

       try {
              con1= DriverManager.getConnection("jdbc:derby://localhost:1527//accountsdb","accounts","accounts");
       } catch (SQLException ex) {
              Logger.getLogger(reports.class.getName()).log(Level.SEVERE, null, ex);
       }

       String jrxmlFileName = "C:/Users/hosam/Documents/NetBeansProjects/Accsys/src/accsys/report2.jrxml";
      JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFileName);
      JasperReport jasperReport =JasperCompileManager.compileReport(jasperDesign);
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param1, con1);
      JasperViewer.viewReport(jasperPrint); 
   } catch (JRException ex) {
           JOptionPane.showMessageDialog( null,  ex);
   }    
}

共有1个答案

岳奇逸
2023-03-14

在传递的参数和jrxml中的定义之间有一个不同的类。

jTfdate.getText() 返回一个类型为 java.lang.String 的对象

在jrxml中,您有这样的参数定义

<parameter name="fdate" class="java.util.Date">
    <defaultValueExpression><![CDATA[""]]></defaultValueExpression>
</parameter>

解决方案,在参数映射中传递java.util.Date对象。

例子

param1.put("fdate",new SimpleDateFormat("yourPattern").parse(jTfdate.getText()));

其中模式,"你的模式"应该对应于解析的文本,请参见SimpleDateFormat模式。

如何捕获ParseExc的和设置默认值,我留给你。

 类似资料:
  • 问题内容: 我正在尝试创建以start_date和end_date为参数的 JR 报告。 查询: 代码: 我们可以将两个参数传递到表中的同一列吗?例如: 问题答案: 您的代码是错误的。 您应该传递如下参数: 您无需添加 到参数名称。 JasperReports 分发包中有很多示例。 您可以查看此样本以获取更多详细信息。

  • 如何将UTC日期传递给Web API? 传递< code>2010-01-01可以正常工作,但是当我传递一个UTC日期,如< code > 2014-12-31t 22:00:00 . 000 z (带有时间部分)时,我得到一个HTTP 404响应。因此 产生 404 错误响应,而 工作正常。 如何将UTC日期传递给Web API,或者至少指定日期和时间?

  • Jasper reports正在努力从vip.user中找到字段。当我将prompt作为false使用defaultValueExpression填充数组列表时,它可以工作。

  • 我在一个spring MVC项目和spring tools套件中工作,我想把一个日期参数传递给一个原生查询,到目前为止我已经有了这个。 扩展JpaRepository的接口中的查询方法

  • 我想使用不同项目的jasper报告生成一个账单。为此,我定义了一些字符串数组,希望在账单中显示为项目列表。 我填写jasper报告的代码如下 Sling数组用于填充ArrayList,这些ArrayList被传递到HashMap以填充我的报告。HasMap键是在文件中声明Invoice.jrxml参数名称。参数名称被赋予如下文本文件 我想打印项目列表,但我得到的输出是单行逗号分隔值。 此处为示例输