2016-05-28 2 views
0

Hier habe ich einige Listen gemacht, wo ich Werte abholen und speichern in einigen bestimmten Listen und da ich auf diese Werte zugreifen möchte In einer anderen Methode erstelle ich eine Sitzungsvariable und übergebe diese Werte in der Sitzungsvariablen, indem ich den Schlüssel festlege und in einer anderen Methode mit get (key) darauf zugreife, was ich erfolgreich mache. Aber jetzt möchte ich PDF machen in einer anderen Methode, die Werte verwendet, die in Listen sind. Aber ich bin dazu nicht in der Lage. Nachstehend ist mein Code und bitte hilf mir, Werte für die Erstellung von PDFs zu übergeben.nicht möglich, Werte von Sitzungsvariablen für die Erstellung von PDF mit iText und Struts2

package com.ca.actions; 

import java.io.FileOutputStream; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 

import org.apache.struts2.dispatcher.SessionMap; 
import org.apache.struts2.interceptor.SessionAware; 

import com.ca.database.Database; 
import com.ca.pojo.Event; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.Element; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.Phrase; 
import com.itextpdf.text.pdf.PdfPCell; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.Preparable; 

public class DataForGeneralReportsAction extends ActionSupport implements 
     Preparable, SessionAware { 
    private List<String> eventsGeneral = new ArrayList<String>(); 
    private List<String> companiesGeneral = new ArrayList<String>(); 
    private SessionMap<String, Object> sessionMapGeneral; 
    List<String> eventIdList = new ArrayList<String>(); 
    List<String> eventNameList = new ArrayList<String>(); 
    List<String> eventVenueList = new ArrayList<String>(); 
    List<String> eventTimeList = new ArrayList<String>(); 
    List<String> companyNameList = new ArrayList<String>(); 
    List<String> totalAmountList = new ArrayList<String>(); 
    List<String> receivedAmountList = new ArrayList<String>(); 
    List<String> balanceAmountList = new ArrayList<String>(); 
    List<String> eventTdsList = new ArrayList<String>(); 
    List<String> paymentDateList = new ArrayList<String>(); 
    List<String> chequeDdList = new ArrayList<String>(); 

    private String eventGeneral = null; 
    private String companyGeneral = null; 
    List<Event> dataForGeneralReports; 

    public List<String> getEventIdList() { 
     return eventIdList; 
    } 

    public void setEventIdList(List<String> eventIdList) { 
     this.eventIdList = eventIdList; 
    } 

    public List<String> getEventNameList() { 
     return eventNameList; 
    } 

    public void setEventNameList(List<String> eventNameList) { 
     this.eventNameList = eventNameList; 
    } 

    public List<String> getEventVenueList() { 
     return eventVenueList; 
    } 

    public void setEventVenueList(List<String> eventVenueList) { 
     this.eventVenueList = eventVenueList; 
    } 

    public List<String> getEventTimeList() { 
     return eventTimeList; 
    } 

    public void setEventTimeList(List<String> eventTimeList) { 
     this.eventTimeList = eventTimeList; 
    } 

    public List<String> getCompanyNameList() { 
     return companyNameList; 
    } 

    public void setCompanyNameList(List<String> companyNameList) { 
     this.companyNameList = companyNameList; 
    } 

    public List<String> getTotalAmountList() { 
     return totalAmountList; 
    } 

    public void setTotalAmountList(List<String> totalAmountList) { 
     this.totalAmountList = totalAmountList; 
    } 

    public List<String> getReceivedAmountList() { 
     return receivedAmountList; 
    } 

    public void setReceivedAmountList(List<String> receivedAmountList) { 
     this.receivedAmountList = receivedAmountList; 
    } 

    public List<String> getBalanceAmountList() { 
     return balanceAmountList; 
    } 

    public void setBalanceAmountList(List<String> balanceAmountList) { 
     this.balanceAmountList = balanceAmountList; 
    } 

    public List<String> getEventTdsList() { 
     return eventTdsList; 
    } 

    public void setEventTdsList(List<String> eventTdsList) { 
     this.eventTdsList = eventTdsList; 
    } 

    public List<String> getPaymentDateList() { 
     return paymentDateList; 
    } 

    public void setPaymentDateList(List<String> paymentDateList) { 
     this.paymentDateList = paymentDateList; 
    } 

    public List<String> getChequeDdList() { 
     return chequeDdList; 
    } 

    public void setChequeDdList(List<String> chequeDdList) { 
     this.chequeDdList = chequeDdList; 
    } 

    public SessionMap<String, Object> getSessionMapGeneral() { 
     return sessionMapGeneral; 
    } 

    public void setSessionMapGeneral(
      SessionMap<String, Object> sessionMapGeneral) { 
     this.sessionMapGeneral = sessionMapGeneral; 
    } 

     public String getEventGeneral() { 
     return eventGeneral; 
    } 

    public void setEventGeneral(String eventGeneral) { 
     this.eventGeneral = eventGeneral; 
    } 

    public String getCompanyGeneral() { 
     return companyGeneral; 
    } 

    public void setCompanyGeneral(String companyGeneral) { 
     this.companyGeneral = companyGeneral; 
    } 

    public List<Event> getDataForGeneralReports() { 
     return dataForGeneralReports; 
    } 

    public void setDataForGeneralReports(List<Event> dataForGeneralReports) { 
     this.dataForGeneralReports = dataForGeneralReports; 
    } 

    public List<String> getEventsGeneral() { 
     return eventsGeneral; 
    } 

    public void setEventsGeneral(List<String> eventsGeneral) { 
     this.eventsGeneral = eventsGeneral; 
    } 

    public List<String> getCompaniesGeneral() { 
     return companiesGeneral; 
    } 

    public void setCompaniesGeneral(List<String> companiesGeneral) { 
     this.companiesGeneral = companiesGeneral; 
    } 

    public DataForGeneralReportsAction() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void prepare() throws Exception { 
     // TODO Auto-generated method stub 
     Connection con = null; 
     try { 
      con = new Database().Get_Connection(); 

      // load companies 
      PreparedStatement ps = con 
        .prepareStatement("SELECT DISTINCT company_name FROM event"); 
      ResultSet rs = ps.executeQuery(); 
      while (rs.next()) { 
       companiesGeneral.add(rs.getString("company_name")); 
      } 

      // load events 
      ps = con.prepareStatement("SELECT DISTINCT event_name FROM event"); 
      rs = ps.executeQuery(); 
      while (rs.next()) { 
       eventsGeneral.add(rs.getString("event_name")); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      con.close(); 
     } 

    } 

    @Override 
    public String execute() throws Exception { 

     Connection con = null; 
     try { 
      con = new Database().Get_Connection(); 

      // load the table. The first time the table is loaded completely 
      String sql = "SELECT EVENT_ID, EVENT_NAME, COMPANY_NAME,EVENT_VENUE,TOTAL_AMOUNT,RECEIVED_AMOUNT,EVENT_TDS,BALANCE_AMOUNT,CHEQUE_DD_NO," 
        + "date_format(PAYMENT_DATE,'%d/%m/%Y') as dateAsPayment,EVENT_TIME " 
        + "FROM event"; 
      String where = ""; 

      // if instead this action has been called from the JSP page, 
      // the result is filtered on event and company: 
      if (eventGeneral != null && companyGeneral != null) { 
       where = " WHERE event_name = ? AND company_name = ?"; 
      } 

      // load companies 
      PreparedStatement ps = con.prepareStatement(sql + where); 
      if (where.length() > 0) { 
       ps.setString(1, eventGeneral); 
       ps.setString(2, companyGeneral); 
      } 
      dataForGeneralReports = new ArrayList<Event>(); 
      ResultSet rs = ps.executeQuery(); 
      int i, j = 0; 
      while (rs.next()) { 

       dataForGeneralReports.add(new Event(rs.getString("EVENT_ID"), 
         rs.getString("EVENT_NAME"), rs 
           .getString("COMPANY_NAME"), rs 
           .getString("EVENT_VENUE"), rs 
           .getString("EVENT_TIME"), rs 
           .getString("TOTAL_AMOUNT"), rs 
           .getString("RECEIVED_AMOUNT"), rs 
           .getString("CHEQUE_DD_NO"), rs 
           .getString("dateAsPayment"), rs 
           .getString("BALANCE_AMOUNT"), rs 
           .getString("EVENT_TDS"))); 

       eventIdList.add(rs.getString("EVENT_ID")); 
       eventNameList.add(rs.getString("EVENT_NAME")); 
       companyNameList.add(rs.getString("COMPANY_NAME")); 
       eventVenueList.add(rs.getString("EVENT_VENUE")); 
       eventTimeList.add(rs.getString("EVENT_TIME")); 
       totalAmountList.add(rs.getString("TOTAL_AMOUNT")); 
       receivedAmountList.add(rs.getString("RECEIVED_AMOUNT")); 
       chequeDdList.add(rs.getString("CHEQUE_DD_NO")); 
       paymentDateList.add(rs.getString("dateAsPayment")); 
       eventTdsList.add(rs.getString("EVENT_TDS")); 
       balanceAmountList.add(rs.getString("BALANCE_AMOUNT")); 

      } 
      sessionMapGeneral.put("eventIdPdf", eventIdList); 
      sessionMapGeneral.put("eventNamePdf", eventNameList); 
      sessionMapGeneral.put("companyNamePdf", companyNameList); 
      sessionMapGeneral.put("eventVenuePdf", eventVenueList); 
      sessionMapGeneral.put("eventTimePdf", eventTimeList); 
      sessionMapGeneral.put("totalAmountPdf", totalAmountList); 
      sessionMapGeneral.put("receivedAmountPdf",receivedAmountList); 
      sessionMapGeneral.put("chequeDdPdf", chequeDdList); 
      sessionMapGeneral.put("paymentDatePdf",paymentDateList); 
      sessionMapGeneral.put("eventTdsPdf", eventTdsList); 
      sessionMapGeneral.put("balanceAmountPdf", balanceAmountList); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      con.close(); 
     } 

     return SUCCESS; 

    } 

    public String generatePdfGeneral() throws Exception { 

     System.out.println(sessionMapGeneral.get("eventIdPdf")); 
     Document document = new Document(PageSize.A4, 50, 50, 50, 50); 
     PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream("D:\\GeneralReports.pdf")); 
     PdfPTable table = new PdfPTable(11); 
     table.setSpacingBefore(25); 
     table.setWidthPercentage(100); 
     table.setSpacingAfter(25); 

     PdfPCell c1 = new PdfPCell(new Phrase("Event ID ")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Name ")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Time")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     c1 = new PdfPCell(new Phrase("Event Venue")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Company Name")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Total Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Received Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Cheque/DD Number")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Payment Date")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Event TDS")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 
     c1 = new PdfPCell(new Phrase("Balance Amount")); 
     c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
     table.addCell(c1); 

     table.setHeaderRows(1); 
     table.addCell((PdfPCell) sessionMapGeneral.get("eventIdPdf")); 
     table.addCell("1"); 
     table.addCell("Net Amount"); 
     table.addCell("1"); 
     table.addCell("Service Tax Number: "); 
     table.addCell("2"); 
     table.addCell("Service Tax @ 0.14 %"); 
     table.addCell("12jh"); 
     table.addCell("123"); 
     table.addCell("safs"); 
     table.addCell("Sbc Tax @0.50%"); 

     document.open(); 
     document.add(table); 
     document.close(); 
     return "success"; 

    } 

    @Override 
    public void setSession(Map<String, Object> map) { 
     // TODO Auto-generated method stub 
     sessionMapGeneral = (SessionMap) map; 
    } 

} 

und ich diese Störung erhalte:

java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.itextpdf.text.pdf.PdfPCell 
    com.ca.actions.DataForGeneralReportsAction.generatePdfGeneral(DataForGeneralReportsAction.java:346) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
    ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:870) 
    ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293) 
    ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) 
    com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:117) 
    com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:108) 
    ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369) 
    ognl.ASTMethod.getValueBody(ASTMethod.java:90) 
    ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) 
    ognl.SimpleNode.getValue(SimpleNode.java:258) 
    ognl.Ognl.getValue(Ognl.java:494) 
    ognl.Ognl.getValue(Ognl.java:458) 

Antwort

0

Das ist falsch:

table.addCell((PdfPCell) sessionMapGeneral.get("eventIdPdf")); 

Sie haben eine SessionMap mit String Werte als Schlüssel und Object Werte als Werte:

private SessionMap<String, Object> sessionMapGeneral; 

Sie einen Eintrag mit dem Schlüssel "eventIdPdf" hinzufügen:

sessionMapGeneral.put("eventIdPdf", eventIdList); 

Die eventIdList ist ein ArrayList:

List<String> eventIdList = new ArrayList<String>(); 

Sie keine ArrayList zu einem PdfPCell werfen können, die ist, was Sie versuchen, hier zu tun :

table.addCell((PdfPCell) sessionMapGeneral.get("eventIdPdf")); 

Sie haben, wie etwas zu tun:

PdfPCell cell = new PdfPCell(); 
List<String> list = (List<String>) sessionMapGeneral.get("eventIdPdf"); 
for (String item : list) { 
    cell.addElement(new Paragraph(item)); 
} 
table.addCell(cell); 
+0

Ich habe diesen Code hinzugefügt table.setHeaderRows (1); \t \t PdfPCell Zelle = neue PdfPCell(); \t \t Liste list1 = (Liste ) sessionMapGeneral.get ("eventIdPdf"); \t \t für (String item: list1) { \t \t cell.addElement (neuer Absatz (Artikel)); \t \t} \t \t Tabelle.addCell (Zelle); \t \t Tabelle.addCell ("1"); und es zeigt rote Linie auf list1 in für jede Schleife. es besagt, kann nicht von Objekttyp in String –

+0

konvertieren verwenden. toString() Methode zum Konvertieren von Object in String –

+1

wo sollte ich das schreiben, weil es nicht erlaubt für (String item: list1.toString()) –

Verwandte Themen