Как установить значение списка <String>в DynamicJasper - PullRequest
3 голосов
/ 20 мая 2011

Мне нужно создать динамический счетчик столбцов в моем отчете. Поэтому я установил в свой JasperPrint массив Object:

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

Мой объект - это класс:

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);
    }
}

и затем я пытаюсь создать столбцы:

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);
}

В конце концов, у меня есть исключение:

net.sf.jasperreports.engine.design.JRValidationException: отчет дизайн не действителен: 1. Класс "java.lang.Object" не поддерживается для выражения текстового поля.

Пожалуйста, помогите! Я не знаю, как использовать Джаспер и список или массив

1 Ответ

1 голос
/ 27 мая 2011

Jasper Reports не допускает использование Object в качестве допустимого типа для своих элементов.Я должен быть одним из следующих:

  • Строка
  • Число (или любой его подкласс)
  • Дата
  • Логическое значение

Вы должны задать каждому элементу формы его класс и передать соответствующий класс построителю столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...