如何设置列表的值在动态贾斯珀

发布于 2024-11-08 04:32:40 字数 2192 浏览 8 评论 0原文

我需要在报告中生成动态列数。所以我将大量的对象设置为 JasperPrint:

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

我的 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”。

请帮忙!我不知道如何使用 jasper 和列表或数组

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黎夕旧梦 2024-11-15 04:32:40

Jasper Reports 不允许 Object 作为其元素的有效类型。我必须是以下之一:

  • 字符串
  • 数字(或其任何子类)
  • 日期
  • 布尔值

您应该询问表单中的每个元素的类,并将正确的类传递给列生成器。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文