2017-02-03 79 views
-1

我将一个List作为参数传递给Jasper,如下所示。Jasper Report打印Arraylist中的自定义对象

Map<String, Object> model=new HashMap<>(); 
    List<CustomObject> issues=new ArrayList<>(); 
      issues.add(new CustomObject(1,"AIRPORT Services","XYZ","asdfa","asdf","asddf")); 
      issues.add(new CustomObject(1,"AIRPORT Services","XYZ","asdfa","asdf","asddf")); 
      model.put("issues",issues); 
      JasperPrint jasperPrint1 = JasperFillManager.fillReport(report, model, new JREmptyDataSource()); 

现在我能够检索jasper中的issuesList,但我无法检索CustomObject内的值。

以下工作并打印CustomObject参考使用以下

<textFieldExpression><![CDATA[$P{list}.get($V{ROW_INDEX})]]></textFieldExpression> 

这将引发异常,当我要访问自定义对象场内的价值迭代如

<textFieldExpression><![CDATA[$P{list}.get($V{ROW_INDEX}).getCustomMethod()]]>

例外:

Exception obtained is: The method getCustomMethod() is undefined for the type Object value = ((java.util.List)parameter_list.getValue()).get(((java.lang.Integer)variable_ROW_INDEX.getValue())).getCustomMethod(); //$JR_EXPR_ID=0$ 

在Mike的帮助下答案在Print an arraylist content with JasperReports 我已经在碧玉中迭代了我的Arraylist。任何帮助高度赞赏。

+0

我不知道碧玉这为我工作,但这个错误'例外获得的是:该方法getCustomMethod()是未定义的类型对象值给我的印象是,从列表中获取的实例的声明类型不是'CustomObject',而是'Object'。尝试找到一种将它们转换为'CustomObject'的方法。 – davidxxx

+0

你是对的这对我来说当我在JRXML中投入为 –

+0

伟大:)不要犹豫,写一个答案,并接受它。它可以帮助其他人。 – davidxxx

回答

1

,当我刚刚从Object转换为CustomObject等作为 遵循

<textFieldExpression><![CDATA[((com.custom.CustomObject)$P{flightIssues}.get($V{ROW_INDEX})).getCustomeMethod()]]></textFieldExpression>