2016-07-18 34 views
0

這裏我用了一個委託方從數據庫中提取數據,我使用了ofbiz框架上的PDF數據。無法顯示在動態報表

public static String createTransactionSummaryReport(HttpServletRequest request, HttpServletResponse response) throws Exception{ 

    Delegator delegator = (Delegator)request.getAttribute("delegator"); 
    String accountName = request.getParameter("accountName"); 

    JasperReportBuilder report = report(); 

    response.setContentType("application/pdf"); 
    //OutputStream out = response.getOutputStream(); 

    report.columns(
      Columns.column("AccountName", "accountName", DataTypes.stringType()), 
      Columns.column("Amount", "amount", DataTypes.bigDecimalType()), 
      Columns.column("DebitAmount", "debitAmount", DataTypes.bigDecimalType()), 
      Columns.column("CreditAmount", "creditAmount", DataTypes.bigDecimalType()) 
    ).title(Components.text("Transaction Summary Details")) 
    .pageFooter(Components.pageXofY()) 
    .setDataSource(getCollectionData(delegator, accountName)) 
    .show(); 
    /*try { 
     report.show(); 
     //report.toPdf(out); 
    } catch(DRException ex) { 
     ex.getCause().printStackTrace(); 
    }*/ 
    return "success"; 
} 

private static JRDataSource getCollectionData(Delegator delegator, String accountName) { 

    List<TransactionSummaryDataProvider> dataList = new ArrayList<TransactionSummaryDataProvider>(); 

    List<GenericValue> accTgTransaDetails = null; 

    try { 
     accTgTransaDetails = delegator.findByAnd("AcctgTransEntrySums", UtilMisc.toMap("accountName",accountName)); 
    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 

    for(GenericValue eachData : accTgTransaDetails) { 

     String accName = eachData.getString("accountName"); 
     BigDecimal amount = eachData.getBigDecimal("amount"); 
     BigDecimal debitAmount = eachData.getBigDecimal("debitAmount"); 
     BigDecimal creditAmount = eachData.getBigDecimal("creditAmount"); 

     dataList.add(new TransactionSummaryDataProvider(accName, amount, debitAmount, creditAmount)); 
    } 

    return new JRBeanCollectionDataSource(dataList); 
} 

Bean類:

生成PDF源代碼

public class TransactionSummaryDataProvider { 

    private String accountName; 
    private BigDecimal amount; 
    private BigDecimal debitAmount; 
    private BigDecimal creditAmount; 

    public TransactionSummaryDataProvider(String accountName, BigDecimal amount, BigDecimal debitAmount, BigDecimal creditAmount) { 
     this.accountName = accountName; 
     this.amount = amount; 
     this.debitAmount = debitAmount; 
     this.creditAmount = creditAmount; 
    } 

    public String getAccountName() { 
     return accountName; 
    } 

    public void setAccountName(String accountName) { 
     this.accountName = accountName; 
    } 

    public BigDecimal getAmount() { 
     return amount; 
    } 

    public void setAmount(BigDecimal amount) { 
     this.amount = amount; 
    } 

    public BigDecimal getDebitAmount() { 
     return debitAmount; 
    } 

    public void setDebitAmount(BigDecimal debitAmount) { 
     this.debitAmount = debitAmount; 
    } 

    public BigDecimal getCreditAmount() { 
     return creditAmount; 
    } 

    public void setCreditAmount(BigDecimal creditAmount) { 
     this.creditAmount = creditAmount; 
    } 
} 

.show()方法拋出InvocationTargetException

我怎樣才能解決這個問題?

dataList有所需的數據,但這些數據沒有在PDF格式顯示。

+0

我認爲'展()當您從叫它'會工作一個'main()'。 –

回答