2011-05-20 45 views
2

我需要生成me報表中的列的動態計數。所以我設置爲我JasperPrint大規模的對象:如何在DynamicJasper中設置列表<String>的值

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.JRValid ationException:報告 設計無效: 1.不支持文本字段表達式的類「java.lang.Object」。

請幫忙!我不知道如何使用碧玉和列表或陣列

回答

1

Jasper Reports不允許Object作爲其元素的有效類型。我必須是下列之一:

  • 字符串
  • 號碼(或它的任何子類)
  • 日期
  • 布爾

你應該問的每個元素的形式它的類並將適當的類傳遞給列構建器。

相關問題