Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set value of list<String> in DynamicJasper

I need to generate dynamic count of columns in me report. So I set to my JasperPrint the massive of Object:

Object[] obj = new Object[selectedUsers.size()];
//fill the massive
JasperPrint jp = DynamicJasperHelper.generateJasperPrint(dr, new ClassicLayoutManager(), new JRBeanArrayDataSource(obj));

My obj is a class:

public class ResultsDTO {
    private String login;
    private Integer id;
    private List<String> list;
    private Object[] results;

    public Object[] getResults() {
        return results;
    }

    public void setResults(Object[] results) {
        this.results = results;
    }

    public ResultsDTO(){

    }

    public ResultsDTO(Integer id,String login) {
        super();
        this.login = login;
        this.id = id;
    }

    public ResultsDTO(String login, Integer id, List<String> list) {
        super();
        this.login = login;
        this.id = id;
        this.list = list;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void addToList(String day_result){
        this.list.add(day_result);
    }
}

and then I try to create columns:

FastReportBuilder firstReport = new FastReportBuilder();
List<AbstractColumn> column_list = new ArrayList<AbstractColumn>();

AbstractColumn columnId = getColumn("id", Integer.class,"№", 30, headerStyle, detailStyle);
AbstractColumn columnLogin = getColumn("login", String.class,"ФИО", 150, headerStyle, detailStyle);

for (int i = 0; i < header.size(); i++){
    AbstractColumn column = getColumn("results", Object.class, header.get(i), 80, headerStyle, detailStyle);
    column_list.add(column);
}

Eventually I have an exception:

net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. Class "java.lang.Object" not supported for text field expression.

Please, help! I don' know how to use jasper and list or array

like image 933
Anuhastik Avatar asked Dec 14 '25 14:12

Anuhastik


1 Answers

Jasper Reports does not allow Object as a valid type for its elements. I has to be one of the following:

  • String
  • Number (or any subclass of it)
  • Date
  • Boolean

You should ask each element in the form for its class and pass proper class to the column builder.

like image 125
Juan alvarez Avatar answered Dec 19 '25 05:12

Juan alvarez



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!