2016-07-18 3 views
0

Здесь я использовал делегата для извлечения данных из базы данных, и я использую фреймворк ofbiz.Невозможно показать данные по pdf в динамическом отчете

Исходный код, который генерирует 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 Класс:

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()'. –

ответ

0

Для лучшего опыта задавать такие вопросы пользователя мл проекта Apache OFBiz, смотрите здесь, как подключиться к нескольким экспертам OFBiz: https://ofbiz.apache.org/mailing-lists.html