JRBeanCollectionDataSource: ¿Cómo mostrar datos de java.util.List desde JavaBean?

Posible duplicado:
¿Cómo imprimo una lista de cadenas contenidas dentro de otra lista en iReport?

Mi JavaBean contiene java.util.List .

Userinfo { private String username; private String password; List
listAddress; }

¿Cómo mostrar los datos de esta lista en la banda de detalles?

Su pregunta duplica el ¿Cómo imprimo una lista de cadenas contenidas dentro de otra lista en iReport? pregunta y relacionado con Pasar la lista de objetos de tipo primitivo como fuente de datos para la pregunta de subinforme .


Aquí está la muestra de trabajo.

Los puntos clave de esta muestra:

  • uso de la expresión _THIS ;
  • usando el componente List (jr: list) en la banda Detail

El fragmento de código para generar el informe:

 public static void testBuildPdf() { try { Map params = new HashMap(); JasperReport jasperReport = JasperCompileManager.compileReport(reportSource); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, getDataSource()); JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } private static JRDataSource getDataSource() { Collection coll = new ArrayList(); BeanWithList bean = new BeanWithList(Arrays.asList("London", "Paris"), 1); coll.add(bean); bean = new BeanWithList(Arrays.asList("London", "Madrid", "Moscow"), 2); coll.add(bean); bean = new BeanWithList(Arrays.asList("Rome"), 3); coll.add(bean); return new JRBeanCollectionDataSource(coll); } 

El código de JavaBean:

 public class BeanWithList { private List m_cities; private Integer m_id; public BeanWithList(List cities, Integer id) { m_cities = cities; m_id = id; } public List getCities() { return m_cities; } public Integer getId() { return m_id; } } 

El archivo jrxml:

 < ?xml version="1.0" encoding="UTF-8"?>    < ![CDATA[_THIS]]>      <band height="103" splitType="Stretch"> <statictext> <reportelement x="138" y="28" width="258" height="20"></reportelement> <textelement textAlignment="Center" verticalAlignment="Middle"> <font isBold="true" isItalic="true"></font> </textelement> <text>< ![CDATA[Bean with List sample]]></text> </statictext> </band>               < ![CDATA[Id]]>             < ![CDATA[City name]]>               < ![CDATA[$F{id}]]>      < ![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{cities})]]>            < ![CDATA[$F{city}]]>        

El resultado será:

El informe resultante en formato PDF