Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    [Jasper report e Java] Circostanziato e dettagliato quesito campi nulli

    Carissimi,
    dall'ora del post capirete la mia situazione; non so quanti di voi si siano trovati e restare sveglio per due notti di file ma vi assicuro che non è piacevole!

    Come sapete la mia web application include una servlet che apre un Jasper Report, che al suo interno ne include un altro, che a sua volta ne include un altro. Dal tool di ireport tutto si apre correttamente. Inglobando i jasper nella mia applicazione, dall'ide Eclipse la servlet apposita apre correttamente i report. Caricando il war sul Tomcat locale tutto funziona benissimo.

    Se carico in remoto invece si apre il report padre con i dati corretti, ma dove dovrebbero esserci i sottoreport non vedo alcunché e dove dovrebbero esserci le somme di ritorno dei sottoreport vedo la scritta "null". Sappiate che invece tutti gli altri report singoli (non con sottoreport) si aprono benissimo. Da cosa può dipendere? Sappiate che non dipende dal percorso dei sottoreport: se il percorso presenta qualsiasi errore (ho fatto diverse prove, sia nel nome del sottoreport, che nella modalità di acquisizione del path), vedo semplicemente una pagina completamente bianca e non lo strano report che vedo, col report padre corretto ma con il sottoreport bianco.

    Da cosa può dipendere? Con 72 ore di veglia e la testa che gira siete rimasti solo voi.

    Grazie!

    Archimede

    Per tutti i casi copio la servlet sotto, ribadendovi ancora che non si tratta di problemi lagti al path del sottoreport e che in locale tutto funziona a meraviglia.

    codice:
    package servletReport;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    
    import dao.DAOMain;
    
    /**
     * Servlet implementation class for Servlet: ServletReportStreamPDF
     *
     */
     public class ServletReportStreamPDF extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
       static final long serialVersionUID = 1L;
       
        /* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#HttpServlet()
    	 */
    	public ServletReportStreamPDF() {
    		super();
    	}   	
    	
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		String rptFileName = request.getParameter("rptFileName").toString();
    		String rptFolder = "report"; 
    		JasperPrint jp = null;
    		ServletContext context = this.getServletContext();
    		String mainid = "";
    		String secid = "";
    		String subpath = "";
    		String mainstring = "";
    		
    		if (request.getParameter("mainid") == null){
                mainid = "0";
            }
    		else
    		{
    			if (request.getParameter("mainid") != null){
    				mainid = request.getParameter("mainid");
    			}
    		}
    		
    		if (request.getParameter("mainstring") == null){
                mainstring = "";
            }
    		else
    		{
    			if (request.getParameter("mainstring") != null){
    				mainstring = request.getParameter("mainstring");
    			}
    		}
    		
    		if (request.getParameter("secid") == null){
                secid = "0";
            }
    		else
    		{
    			if (request.getParameter("secid") != null){
    				secid = request.getParameter("secid");
    			}
    		}
    		
    		if (request.getParameter("subpath") == null){
                subpath = "";
            }
    		else
    		{
    			if (request.getParameter("subpath") != null){
    				subpath = request.getParameter("subpath");
    			}
    		}
    		
    		Map parameters = new HashMap();
    		parameters.put("mainid", new Integer(mainid));
    		parameters.put("mainstring", mainstring);
    		parameters.put("secid", new Integer(secid));
    		parameters.put("subpath", subpath);
    
            parameters.put("SUBREPORT_DIR", context.getRealPath(rptFolder + "//" + subpath + "//" + "rptFatCanFor_subFor.jasper"));
    		parameters.put("SUB_SUBREPORT_DIR", context.getRealPath(rptFolder + "//" + subpath + "//" + "rptFatCanFor_subFor_subFat.jasper"));
    		
    		Connection Conn = null; 
    		DAOMain rptDAO = new DAOMain();
    		
    		try {
    			Conn = rptDAO.myCn();
    		} catch (InstantiationException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (IllegalAccessException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (ClassNotFoundException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		
    		try {
    			jp = JasperFillManager.fillReport(context.getResourceAsStream("/" + rptFolder + "/" + subpath + "/" + rptFileName + ".jasper"), parameters, Conn);
    		} catch (JRException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		ServletOutputStream outStream = response.getOutputStream();
    		
    		try {
    			JasperExportManager.exportReportToPdfStream(jp, outStream);
    		} catch (JRException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}  	
    	
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request,response);
    	}   	  	    
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Rispondo per allegare una prima immagine, relativa al funzionamento corretto ed a come il report si apre in locale così come dovrebbe essere.
    Immagini allegate Immagini allegate

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Questa seconda immagine, che vi invio per maggior chiarezza, è relativa a quello che il report mi combina se lo carico sul mio spazio web in remoto.
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Ho capito. Ho collocato un subreport senza dati ma con soli campi statici. Anche qui il problema persiste. Quindi dipende proprio dalle righe che passano il percorso del subreport al main sotto forma di parametro, almeno secondo me. Nessuno di voi analizzando la mia servlet ravvisa qualche errore?

    Grazie...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.