2014-08-28 3 views
0

Я пытаюсь создать отчет, используя JasperReports к моему приложению. Что происходит, когда я делаю некоторые изменения на JasperReports не обновляется в моем приложении.
Я попытался обновить мой проект, обновить свой браузер и всегда отображается отчет без измененийJasperReports всегда открывает тот же отчет?

Я пытаюсь это

public class ImprimeListaChamadaReport { 
    private Turma turma;  
    private final String pathJasper = "br/com/webapp/reports/jasper/ListaDeChamadas.jasper"; 

    public ImprimeListaChamadaReport(Turma t){ 
     this.turma = t; 
     createReport(); 
    } 

    private void createReport(){ 
     final Map map = new HashMap();     
     final JRDataSource ds = new JRBeanCollectionDataSource(turma.getMatriculas()); 

     StreamResource.StreamSource source = new StreamResource.StreamSource() { 
      public InputStream getStream() { 
       byte[] b = null; 

       try {     
        b = JasperRunManager.runReportToPdf(getClass().getClassLoader().getResourceAsStream(pathJasper), map, ds); 
       } catch (JRException ex) { 
        ex.printStackTrace(); 
       } 
       return new ByteArrayInputStream(b); 
      } 
     }; 

     StreamResource resource = new StreamResource(source, "ListaDeChamadas.pdf"); 
     resource.setMIMEType("application/pdf");    

     Embedded e = new Embedded("", resource); 
     e.setSizeFull(); 
     e.setMimeType("application/pdf"); 
     e.setType(Embedded.TYPE_BROWSER);  

     ReportWindow w = new ReportWindow("Lista de chamada", e); 
     UI.getCurrent().addWindow(w);  
    }  
} 

Я разместил изображения. Я изменил «Hellooooo», и когда я показываю, он не изменился.

Любая идея?

enter image description here

enter image description here

+1

Вы перекомпилировали 'jxml' в' jasper'? Вы обновили кеш веб-сервера/контейнера ...? – MadProgrammer

+0

Я перепробовал jxml, и я остановился/начал Tomcat – FernandoPaiva

+0

Я использую Maven с Ваадином. Вы думаете, это может быть что-то? – FernandoPaiva

ответ

2

Проблема редко бывает с .jasper файл приходит из кэша. Быстрое решение этого - очистить рабочий каталог вашего сервера и очистить сервер.

Если это все еще не помогает, удалите файл .jasper, прежде чем перенастраивать приложение. И чем позже обновить проект.

Надеюсь, что это решает проблему.

-2
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import javax.servlet.ServletOutputStream; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.log4j.Logger; 

import net.sf.jasperreports.engine.JREmptyDataSource; 
import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JRExporter; 
import net.sf.jasperreports.engine.JRExporterParameter; 
import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; 
import net.sf.jasperreports.engine.export.JRHtmlExporter; 
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter; 
import net.sf.jasperreports.j2ee.servlets.ImageServlet; 

public class JasperReport { 

    Logger log = GmLogger.getInstance(this.getClass().getName()); 

    private String strJasperReportName = ""; 
    private HashMap hmReportParameters = null; 
    private List reportDataList = null; 
    private HttpServletRequest request = null; 
    private HttpServletResponse response = null; 
    private String strJasperRealLocation = ""; 
    private int intpageHeight = 970; 

    public void setJasperReportName(String strReportName) { 
     this.strJasperReportName = strReportName; 
    } 

    public String getJasperReportName() { 
     return strJasperReportName; 
    } 

    public void setHmReportParameters(HashMap hmParameters) { 
     this.hmReportParameters = hmParameters; 
    } 

    public void setPageHeight(int intPHeight) { 
     this.intpageHeight = intPHeight; 
    } 

    public HashMap getHmReportParameters() { 
     return hmReportParameters; 
    } 

    public void setReportDataList(List dataList) { 
     this.reportDataList = dataList; 
    } 

    public List getReportDataList() { 
     return reportDataList; 
    } 

    public HttpServletRequest getRequest() { 
     return request; 
    } 

    public void setRequest(HttpServletRequest request) { 
     this.request = request; 
    } 

    public HttpServletResponse getResponse() { 
     return response; 
    } 

    public void setResponse(HttpServletResponse response) { 
     this.response = response; 
    } 

    /** 
    * in the future, when we use another jasper location, "path", and set it in the 
    * method:setJasperRealLocation(String path), instead of returns this 
    * default strJasperRealLocation, it will return the value of "path"; 
    */ 
    public String getJasperRealLocation() { 
     if (strJasperRealLocation == null || strJasperRealLocation.equals("")) { 
      strJasperRealLocation = request.getSession().getServletContext().getRealPath(GmCommonClass.getString("GMJASPERLOCATION")); 
     } 
     return strJasperRealLocation; 
    } 

    public void setJasperRealLocation(String path) { 
     this.strJasperRealLocation = path; 
    } 

    public void createJasperReport() throws Exception { 
     String strJasperPath = GmCommonClass.getString("GMJASPERLOCATION"); 
     JasperPrint jp = null; 
     JRExporter exporter = null; 


     InputStream reportStream; 
     ServletOutputStream servletOutputStream = response.getOutputStream(); 
     reportStream = request.getSession().getServletContext().getResourceAsStream(strJasperPath + strJasperReportName); 
     if (reportDataList != null) { 
      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JRBeanCollectionDataSource(reportDataList)); 
     } else { 
      /* 
      * if there is/are subreport(s) in detail section and we don't want 
      * to print out duplicated sub reports, set this value as "new 
      * JREmptyDataSource()" when use reportDataList in the detail 
      * section. 
      */ 

      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JREmptyDataSource()); 
     } 

     jp.setPageHeight(intpageHeight); 

     exporter = new JRHtmlExporter(); 

     exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); 
     exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream); 

     request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jp); 
     exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, new HashMap()); 

     exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + "/GmImageServlet?image="); 
     exporter.exportReport(); 

     servletOutputStream.close(); 
    } 

    public String getHtmlReport() throws JRException, FileNotFoundException, IOException { 
     String strJasperPath = GmCommonClass.getString("GMJASPERLOCATION"); 
     JasperPrint jp = null; 
     JRExporter exporter = null; 
     StringBuffer strBuffer = new StringBuffer(); 

     InputStream reportStream; 

     if(request == null) 
     { 
      String jasperPath = GmCommonClass.getString("GMJASPERTEMPLATEPATH"); 
      reportStream = new FileInputStream(jasperPath + strJasperReportName); 
      log.debug("Jasper location = " + jasperPath + strJasperReportName); 
     } 
     else 
     { 
      reportStream = request.getSession().getServletContext().getResourceAsStream(strJasperPath + strJasperReportName); 
      log.debug("Jasper location = " + strJasperPath + strJasperReportName); 
     } 
     if (reportDataList != null) { 
      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JRBeanCollectionDataSource(reportDataList)); 
     } else { 
      /* 
      * if there is/are subreport(s) in detail section and we don't want 
      * to print out duplicated sub reports, set this value as "new 
      * JREmptyDataSource()" when use reportDataList in the detail 
      * section. 
      */ 

      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JREmptyDataSource()); 
     } 

     jp.setPageHeight(intpageHeight); 


     exporter = new JRHtmlExporter(); 

     exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); 
     exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, strBuffer); 

     //request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jp); 
     //exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, new HashMap()); 

     //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + "/GmImageServlet?image="); 
     //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, getImageURI()); 
     // 
     exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, new Boolean(false)); 
     exporter.exportReport(); 
     return strBuffer.toString(); 
    } 

    public void exportJasperReportToHtml(String strDestFileName) throws Exception { 
     String strJasperPath = GmCommonClass.getString("GMJASPERLOCATION"); 
     JasperPrint jp = null; 

     InputStream reportStream; 
     ServletOutputStream servletOutputStream = response.getOutputStream(); 
     reportStream = request.getSession().getServletContext().getResourceAsStream(strJasperPath + strJasperReportName); 
     if (reportDataList != null) { 
      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JRBeanCollectionDataSource(reportDataList)); 
     } else { 
      /* 
      * if there is/are subreport(s) in detail section and we don't want 
      * to print out duplicated sub reports, set this value as "new 
      * JREmptyDataSource()" when use reportDataList in the detail 
      * section. 
      */ 
      jp = JasperFillManager.fillReport(reportStream, hmReportParameters, new JREmptyDataSource()); 
     } 

     jp.setPageHeight(intpageHeight);   
     JasperExportManager.exportReportToHtmlFile(jp,strDestFileName);  
     servletOutputStream.close(); 
    } 

    public HashMap sendJasperMail(String strReportName, 
      HashMap hmParams, 
      ArrayList alReportData, 
      GmEmailProperties emailProperties, HttpServletRequest request) throws Exception 
    { 
     HashMap hmReturn = new HashMap(); 
     try 
     { 
      String strMessageDesc = "Original Mail Not Found."; 
      setJasperReportName(strReportName); 
      setHmReportParameters(hmParams); 
      setReportDataList(alReportData); 
      setRequest(request); 
      strMessageDesc = getHtmlReport(); 

      hmReturn.put("ORIGINALMAIL", strMessageDesc); 

      emailProperties.setMessage(strMessageDesc); 

      log.debug("Sending jasper mail to : " + emailProperties); 
      GmCommonClass.sendMail(emailProperties); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
      hmReturn.put("EXCEPTION", e); 
     } 
     return hmReturn; 
    } 


} 
+0

В чем смысл ???? – Don

Смежные вопросы