首页 > 解决方案 > 启动收集的构造函数时出现问题

问题描述

我有一个 arrayList ( List dinTabel = new ArrayList();) 我想在一个集合 ( Collection<ExtraContList> coll = new ArrayList<ExtraContList>();)中传递给 JasperReport

我在这里有我的 ExtraContList java 类:

package banking.model;

import java.util.List;

public class ExtraContList {

    private List<String> cont;
    private List<String> sum_deb;
    private List<String> sum_cred;
    private List<String> sold_curent;
    private List<String> data;

    public List<String> getData() {
        return data;
    }

    public Integer getCont() {
        return cont;
    }

    public List<String> getSum_deb() {
        return sum_deb;
    }

    public List<String> getSum_cred() {
        return sum_cred;
    }

    public List<String> getSold_curent() {
        return sold_curent;
    }



    public ExtraContList(List<String> data, List<String> sum_deb, List<String> sum_cred,
            List<String> sold_curent, Integer cont) {
        super();
        this.data = data;
        this.cont = cont;
        this.sum_deb = sum_deb;
        this.sum_cred = sum_cred;
        this.sold_curent = sold_curent;
    }


}

但是每当我尝试通过这一行添加arrayList

coll.add(new ExtraContList(Arrays.asList(resultSet.getString("d_o"),ConturiUserID,resultSet.getString("tsum")," ",resultSet.getString("sCS"))));

它告诉我构造函数是未定义的,它给我创造了这个

public ExtraContList(List<? extends Object> asList) {
        // TODO Auto-generated constructor stub
    }

你能告诉我..如何添加这个

public ExtraContList(List<String> data, List<String> sum_deb, List<String> sum_cred,
                List<String> sold_curent, Integer cont) {
            super();
            this.data = data;
            this.cont = cont;
            this.sum_deb = sum_deb;
            this.sum_cred = sum_cred;
            this.sold_curent = sold_curent;
        }       

构造函数(ExtraContList(List<? extends Object> asList))?

更新:我从 coll.add(newExtraContList(Arrays.asList(resultSet.getString("d_o"),ConturiUserID," ",resultSet.getString("tsum"),resultSet.getString("sCD"))));

coll.add(new ExtraContList(Arrays.asList(resultSet.getString("d_o")),Arrays.asList(ConturiUserIDint),Arrays.asList(" "),Arrays.asList(resultSet.getString("tsum")),Arrays.asList(resultSet.getString("sCD"))));

我不知道如何打印我的收藏夹的内容,看看是否一切正常。运行后

System.out.println(coll); 

它打印我

[banking.model.ExtraContList@4593f370, banking.model.ExtraContList@23feaea9, banking.model.ExtraContList@221b98b5]

我在我的 jrxml 中添加了这些字段:

<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="data" class="java.util.List"/>
    <field name="sold_curent" class="java.util.List"/>
    <field name="sum_cred" class="java.util.List"/>
    <field name="class" class="java.lang.Class"/>
    <field name="sum_deb" class="java.util.List"/>
    <field name="cont" class="java.util.List"/> 

但我收到这个:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: data.
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:205)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:170)
    at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)
    at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1501)
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1402)
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1378)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1194)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:108)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:615)
    at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:432)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:162)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:145)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:689)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:1005)
    at banking.web.servlets.ExtraCont.doPost(ExtraCont.java:321)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoSuchMethodException: Unknown property 'data' on class 'class java.lang.String'
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1269)
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:808)
    at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:884)
    at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:464)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:185)
    ... 35 more

即使更改了字段名称,我仍然会收到错误消息

<field name="data" class="java.util.List"/>

进入:

<field name="data" class="banking.model.ExtraContList"/>

我还将 cont 变量从 Integer 修改为 List

标签: javaarraylistcollectionsjasper-reports

解决方案


推荐阅读