This article will explain the following information about JavaBean data source:

  • how to create data source
  • how to configure classpath to make the data source available for the designer
  • how to define and configure JasperReports JavaBean data source in JasperWave
  • how to extract report fields from JavaBean object
  • how to design and preview the report using JavaBean data source

The purpose of the article is to get a good starting point for report developers who use JasperReports JavaBean (POJO) based data sources to design and run their reports with JasperWave Report Designer.


The sources for the article This article will be most effective if you are able to reproduce each step within your working environment using sources we’ve provided as you read it.

The example in the article was built and tested on:

Notice: the example will not work with minor versions of JasperWave Report Designer.

Introduction to JasperReports JavaBean data source

The JasperReports JavaBean data source implementation can wrap collections or arrays of JavaBean objects and relies on Java reflection to retrieve report field data from the wrapped objects.This data source can be used to generate reports using data already available in-memory in the form of POJOs. Each object inside the array or the collection will be seen as one record in this type of data source.

The mapping between a particular JavaBean property and the corresponding report field is made by naming conventions. The name of the report field must be the same as the name of the JavaBean property as specified by the JavaBeans specifications. For instance, to retrieve the value of a report field named address, the program will try to call through reflection a method called getAddress() on the current JavaBean object.

Nested JavaBean properties can be also accessed in a JavaBean data source. For example, if the current JavaBean object inside the data source is of type Product and contains nested supplier information accessible by calling the getSupplier() method, which returns a Supplier object. In this case, to access the address property inside the Supplier object, a report field named supplier.address is required.

Create a JasperReports JavaBean data source

The JasperReports JavaBean data source consists of two classes:

  1. JavaBean. A simple JavaBean class with properties and their accessors.
  2. Factory. A factory class is used to provide JavaBeans data either as JavaBean arrays or as JavaBean collections. In our sample, it will be Collection.

I have created two classes - ActorBean

= -->
package  mybeans;

import  java.util.Date;

public class  ActorBean {

    private  String movie;
    private  String character;
    private  String name;
    private  Date birthday;

    public  ActorBean() {

    public  ActorBean(String movie, String character, String name, Date birthday) {
        super ();
        this .movie = movie;
        this .character = character;
        this .name = name;
        this .birthday = birthday;

    public  String getMovie() {
        return  movie;

    public  void  setMovie(String movie) {
        this .movie = movie;

    public  String getCharacter() {
        return  character;

    public  void  setCharacter(String character) {
        this .character = character;

    public  String getName() {
        return  name;

    public  void  setName(String name) {
        this .name = name;

    public  Date getBirthday() {
        return  birthday;

    public  void  setBirthday(Date birthday) {
        this .birthday = birthday;

and BeanFactory to generate the Collection of ActorBean objects

= -->
package  mybeans;

import  java.util.ArrayList;
import  java.util.GregorianCalendar;
import  java.util.List;

public class  BeanFactory {

    public  BeanFactory() {

    public  List<ActorBean> getActorBeans() {
        List<ActorBean> actors = new  ArrayList<ActorBean>();

        ActorBean actor1 = new  ActorBean("Californication""HANK MOODY",
                "DAVID DUCHOVNY"new  GregorianCalendar(196087).getTime());

        ActorBean actor2 = new  ActorBean("Breaking Bad""Walter White",
                "Bryan Cranston"new  GregorianCalendar(195637).getTime());

        ActorBean actor3 = new  ActorBean("Californication",
                new  GregorianCalendar(19691214).getTime());

        ActorBean actor4 = new  ActorBean("Breaking Bad""Jesse Pinkman",
                "Aaron Paul"new  GregorianCalendar(1979827).getTime());

        ActorBean actor5 = new  ActorBean("Californication""CHARLIE RUNKLE",
                "EVAN HANDLER"new  GregorianCalendar(1961110).getTime());

        return  actors;

Classses have been compiled and packaged into JAR JavaBeanDatasource.jar after then our JavaBean data source is ready to be used.

Note: Of course, nothing prevents us to create static method whithin ActorBean class to return the collection of data objects but it would be rather sample use case than common use of JavaBean data source.

JavaBean data source in JasperWave

Setup classpath

In order to use created JavaBean data source within JasperWave Report Designer, you should dat source JAR into classpath.To set the classpath follow steps below:

  1. Open classpath preferences: Window-Preferences - JasperWave - Classpath Preferences
  2. Press Add External JARs... button and add JavaBeanDatasource.jar

    JasperWave: JasperReports JavaBean Datasource

Configure the JavaBean data source

Now, let's define and configure the new data source using classes defined above - ActorBean and BeanFactory. To do that, we need to create new report since without it, the toolbar will be unavailable.

  1. Open Data Source dialog using toolbar button

    JasperWave: JasperReports JavaBean Datasource

  2. Press New Datasource button to start data source wizard
  3. Select JavaBeans Datasource
  4. Fulfil the data source settings

    JasperWave: JasperReports JavaBean Datasource


  1. Your classes should be in JasperWave classpath. If you missed something, no need to close the dialog and go to Window - Preferences - JasperWave - Classpath Preferences. You can do that using Classpath button, all changes will be applied immediatelly.
  2. Use Get methods button to read factory class methods. Notice: only methods with return type Collection or Array will be read.

Extract report fields from JavaBean data source

As mentioned, the mapping between a particular JavaBean property and the corresponding report field is made by naming conventions.

The name of the report field must be the same as the name of the JavaBean property.

Based on a such conventions, you can create report fields manually, but JasperWave Report Designer provides you with simple and convinient way:

  1. Press Report Fields button

    JasperWave: JasperReports JavaBean Datasource

  2. Select report fields to be created within the report and press Ok button

    JasperWave: JasperReports JavaBean Datasource

  3. New report fields are available to use

    JasperWave: JasperReports JavaBean Datasource


  1. Use combobox in the left to specify which property should be converted into report field.
  2. Using Update options section, you can manage where and how to add new report fields.

Design the report

I have created a simple report which consists of listing of all fields grouped by $F{movie}.

In order to have this grouping working, it's required to add sorting by the same field - in our case, it's $F{movie}.

JasperWave: JasperReports JavaBean Datasource

Preview the report

Before running the preview, make sure that your JavaBean data source is active . If not so, either select the checkbox in Data Source dialog or select the data source from the combobox on the main toolbar.

JasperWave: JasperReports JavaBean Datasource

One of the most best-known is Viagra. What people talk about how to buy Viagra online reviews? Like all other drugs, Viagra is classified according of it's active ingredient. The most general sexual problems in men are erectile dysfunction and close sexual desire. Impotence can be the first sign of severe psychological problem. Unhealthy lifestyle choices, venous leak, kidney diseases, and several medicaments can reduce your desire. Realizing what underlying stressors may exist is the first step in treatment. While the medication is credited with improving nausea, it may also cause sexual dysfunction.

Free Download

You can try JasperWave Report Designer free for a 30-day trial and see if it is right for you.

Try Now

Buy Now

Purchase a one year subscription to JasperWave Report Designer. Contact us for more information.

Buy Now

Go to top