Foros del Web » Programación para mayores de 30 ;) » Java »

no encuentra url para cargar .jasper

Estas en el tema de no encuentra url para cargar .jasper en el foro de Java en Foros del Web. Hola, estoy intentando obtener un informe con JasperReport pero no me encuentra la url del archivo .jasper. Tengo todas las librerias correctas, y la llamada ...
  #1 (permalink)  
Antiguo 12/07/2011, 04:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
no encuentra url para cargar .jasper

Hola, estoy intentando obtener un informe con JasperReport pero no me encuentra la url del archivo .jasper.

Tengo todas las librerias correctas, y la llamada es :

listadoDiarioOperacionesJasperReport = (JasperReport) JRLoader.loadObject(getClass().getResource("/reportsJasper/ListadoOperacionesDiarias.jasper"));

He probado con varias urls pero con ninguna me lo encuentra. Tb he leído en éste mismo foro que las clases deben estar en el mismo directorio, pero las tengo en el mismo directorio (informes) y no lo encuentra. El directorio de la aplicación es como sigue:

app
-- administration -- ...
-- aplication -- ...
-- common -- (aquí están todas las librerías)
-- informes -- (aquí están todos los action y reportes)
------------ src -- ... -- informes -- clases .java
-------------------------------- reports (y aquí los .jasper y .jrxml)

he probado a poner sólo el nombre "ListadoOperacionesDiarias.jasper", a poner la dirección completa "/informes/src/...../reports/ListadoOperacionesDiarias.jasper", pero no lo coge. ¿Puede alguien decirme dónde debe estar ubicado? No consigo que lo encuentre.

Muchas gracias, un saludo
  #2 (permalink)  
Antiguo 13/07/2011, 09:22
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 8 años
Puntos: 21
Respuesta: no encuentra url para cargar .jasper

Prueba con la ruta enterea, es decir, c:/... la ruta donde esta el jasper

Saludos
  #3 (permalink)  
Antiguo 13/07/2011, 09:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
Respuesta: no encuentra url para cargar .jasper

Hola, al final el problema se soluciona sustituyendo :

getClass().getResource("/reportsJasper/ListadoOperacionesDiarias.jasper"));


por :

this.getClass().getResourceAsStream("rutacompleta" ));

El problema era que necesitaba el this.getClass() y no getClass(), porque cogía uno por defecto que no era el que yo necesitaba, y por eso no me lo encontraba.

Muchas gracias por la ayuda,

un saludo
  #4 (permalink)  
Antiguo 13/07/2011, 09:27
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 8 años
Puntos: 21
Respuesta: no encuentra url para cargar .jasper

tengo una aplicación donde puse esto:

JasperReport reporte = (JasperReport) JRLoader.loadObject("reporte2.jasper");

todo el codigo es este:

Código PHP:
Ver original
  1. package pruebapdf;
  2.  
  3. import java.util.*;
  4. import net.sf.jasperreports.engine.*;
  5. import net.sf.jasperreports.engine.data.*;
  6. import net.sf.jasperreports.engine.export.*;
  7. import net.sf.jasperreports.engine.util.*;
  8.  
  9.  
  10. public class Main {
  11.  
  12.     public static void main(String[] args) throws JRException {
  13.         List<Participante> listaPariticipantes = new ArrayList<Participante>();
  14.  
  15.         for (int i = 1; i <= 10; i++) {
  16.             Participante p = new Participante(i, "ParticIpante " + i, "Usuario " + i, "Pass " + i, "Comentarios para " + i);
  17.             p.setPuntos(i);
  18.             listaPariticipantes.add(p);
  19.         }
  20.  
  21.         JasperReport reporte = (JasperReport) JRLoader.loadObject("reporte2.jasper");
  22.  
  23.         Map<String, String> parametros = new HashMap<String, String>();
  24.         parametros.put("autor", "Juan");
  25.         parametros.put("titulo", "Reporte Participantes");
  26.  
  27.         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, new JRBeanCollectionDataSource(listaPariticipantes));
  28.  
  29.  
  30.         JRExporter exporter = new JRPdfExporter();
  31.         exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  32.         exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new java.io.File("reporte2PDF.pdf"));
  33.         exporter.exportReport();
  34.     }
  35.  
  36.  
  37. }
y el jasper lo tengo a nivel de el proyecto

Saludos
  #5 (permalink)  
Antiguo 13/07/2011, 09:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 8 años
Puntos: 21
Respuesta: no encuentra url para cargar .jasper

Ok me alegro q este solucionado,estaba buscando un ejercicio q hize hace un tiempo y justo me contestaste no lo vi

Saludos
  #6 (permalink)  
Antiguo 13/07/2011, 09:36
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
Respuesta: no encuentra url para cargar .jasper

Lo que ahora no encuentro es la manera de ver ese informe en mi jsp. La idea del proyecto es mostrar el informe dentro de una jsp, pero no sé como hacerlo. He probado a hacer una llamada ajax en la jsp, para obtener el informe y meterlo dentro de un <div> de la jsp, pero no encuentro la manera de meter el informe que me devuelve el action en la jsp. Había probado poner lo siguiente en el action al que llamo en la consulta ajax, y devolver el resultado como código html:

Código:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;

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 net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;

public class OperacionesDiariasReportAction extends OperacionesDiariasActionBase
{	
	private static final long serialVersionUID = 3478522837934206313L;
	
	private Collection<String> errorsList = new ArrayList<String>();
	private javax.swing.JPanel viewerPanel;
	
	
	public Collection<String> getErrorsList() {
		return errorsList;
	}

	public void setErrorsList(Collection<String> errorsList) {
		this.errorsList = errorsList;
	}
	
	protected void loadSession() {
		backedBeanInforme.setPermissionsMask(chargePermissionsMask());
	}

	@SuppressWarnings("unchecked")
	public String execute()
	{
		loadSession();
		//conecta con la bbdd
		Connection connection = null;
		boolean error = false;

		Properties properties = new Properties();		
		String driver = "";
		String url = "";
		String user = "";
		String password = "";
 		
		try 
		{
			properties.load (this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
							//properties.getClass().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
			driver = properties.getProperty("driverJasperReport");
			url = properties.getProperty("urlJasperReport");
			user = properties.getProperty("userJasperReport");
			password = properties.getProperty("passwordJasperReport");
		} 
		catch (FileNotFoundException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		catch (IOException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		
		try 
		{
			connection = DriverManager.getConnection(url, user, password);
		} 
		catch (SQLException e) 
		{
			logger.debug("Error al conectar con DS de informes: " + e.getMessage());
			this.addActionError("Error al conectar con DS de informes: " + e.getMessage());
			error = true;
			e.printStackTrace();
			
		}
		
		JasperPrint jasperPrint = null;
		//String filename = "/es/indra/aodb/informes/web/informes/etc/ListadoOperacionesDiarias.jasper"; segun internet
		JasperReport listadoDiarioOperacionesJasperReport = null;
		
		HashMap parameters = new HashMap();
		parameters.put("tituloInforme", getText("reportTitleDailyOperations"));
		parameters.put("compania", getText("reportTextAirline"));
		parameters.put("numeroVuelo", getText("reportTextFlightNumber"));
		parameters.put("fechaProgramada", getText("reportTextScheduledDate"));
		parameters.put("estadoActual", getText("reportTextStatus"));
		parameters.put("tipoVuelo", getText("reportFlightType"));
		parameters.put("tipoAeronave", getText("reportAircraftType"));
		parameters.put("numeroAsientos", getText("reportNumberSeats"));
		parameters.put("numeroPasajeros", getText("reportNumberPassenger"));
		parameters.put("ocupacion", getText("reportOccupancy"));
		
		SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		try 
		{
			Date fechaInformeDesde = backedBeanInforme.getReportDate();
			String fechaString = backedBeanInforme.getReportDateString();			
			Date fechaInformeHasta = formatoFecha.parse(fechaString + " 23:59:59");
			parameters.put("fechaInformeDesde", fechaInformeDesde);
			parameters.put("fechaInformeHasta", fechaInformeHasta);
		} 
		catch (ParseException e) {
			logger.error("No se han transformado bien las fechas desde y hasta de informe");
			this.addActionError("No se han transformado bien las fechas desde y hasta de informe");
			error = true;
			e.printStackTrace();
		}
		
		try 
		{
			//jasperPrint = JasperFillManager.fillReport(filename, parameters, connection); segun internet
			listadoDiarioOperacionesJasperReport = (JasperReport) JRLoader.loadObject(this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportsJasper/ListadoOperacionesDiarias.jasper"));
			jasperPrint = JasperFillManager.fillReport(listadoDiarioOperacionesJasperReport, parameters, connection);
            if (jasperPrint != null) 
            {
                logger.debug("Se va a mostrar el informe");
                //montar informe en JasperViewer y mostrar en el modulo de informes
                JRViewer viewer = new JRViewer(jasperPrint);
                logger.debug("Informe mostrado");
                JasperExportManager.exportReportToHtmlFile(jasperPrint, "C:/Documents and Settings/empalacios/Proyectos/workspaceAODB/ProbandoNuevaAODB/informes/web/jsp/informes/_loadInforme.jsp");
                logger.debug("informe descargado");
                
                
            } 
            else 
            {
                logger.error("No se ha generado el informe correctamente");
                this.addActionError("No se ha generado el informe correctamente");
                error = true;
            }
		} 
		catch (JRException e1) 
		{
			logger.debug(e1);
			this.addActionError(e1.getMessage());	//cambiar los mensajes de error
			error = true;
			e1.printStackTrace();
		}
		
		if (error == true)
		{
			errorsList = this.getActionErrors();
			return "ERROR";
		}
		else
		{
			return "SUCCESS";
		}
	}
	
	public void validate()
	{
		
	}


}

y se supone que el informe debería meterse en la jsp _loadInforme.jsp. No quiero que se abra el informe en un fichero aparte, sino en mi jsp. Pero no sé como hacerlo, así no me funciona, aparte que la dirección url de la jsp no valdría (debe referirse a la del proyecto, no a la de mi ordenador), pero si le pongo la que debería valer:

/jsp/informes/_loadInforme.jsp

me dá un error.

He visto algo parecido a lo siguiente:

Código:
jrViewer=new JRViewer(jasperPrint);
jrViewer.setBounds(10,40,620,400);
this.getContentPane().add(jrViewer);
this.setVisible(true);
pero luego, ¿como introduzco el ContentPane() en la jsp? La verdad es que nunca lo he utilizado. Si pudieras aunque sea dirigirme un poco, te lo agradecería.

A lo mejor es que no puedo utilizar la consulta Ajax. Pero entonces, utilizo un action, un servlet... como ves ando un poco perdida.

Muchas gracias, un saludo
  #7 (permalink)  
Antiguo 14/07/2011, 02:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 8 años
Puntos: 21
Respuesta: no encuentra url para cargar .jasper

Mira si quieres haz lo siguiente, sabes algo de servlet? si es asi puedes ver estas lienas de codigo

http://www.w3schools.com/ajax/default.asp

Aqui te dice como usar Ajax desde una funciona javascript que apsandole unos parametros

xmlhttp.open("GET","servletallmar",true);

despeus en el servlet mostraras lo q quieas mostrar en tal div

Saludos
  #8 (permalink)  
Antiguo 18/07/2011, 10:05
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
Respuesta: no encuentra url para cargar .jasper

Hola, lo estoy intentando pero de momento no me llega al servlet, ya que estoy haciendo devug y no me pasa por ahí, y no sé por que.
En el web.xml he puesto:

Código:
<servlet>
		<servlet-name>OperacionesDiariasServlet</servlet-name>
		<servlet-class>es.indra.aodb.informes.web.servlet.OperacionesDiariasServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>OperacionesDiariasServlet</servlet-name>
		<url-pattern>/operacionesDiarias.servlet</url-pattern>
	</servlet-mapping>
El servlet es el siguiente:

Código:
package es.indra.aodb.informes.web.servlet;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;


public class OperacionesDiariasServlet extends HttpServlet
{
	private static final long serialVersionUID = 7154490521050615751L;
	
	private Log logger = LogFactory.getLog(this.getClass());
	private static final String TITULO_INFORME = "tituloInforme";
	private static final String COMPANIA = "compania";
	private static final String NUMERO_VUELO = "numeroVuelo";
	private static final String FECHA_PROGRAMADA = "fechaProgramada";
	private static final String ESTADO_ACTUAL = "estadoActual";
	private static final String TIPO_VUELO = "tipoVuelo";
	private static final String TIPO_AERONAVE = "tipoAeronave";
	private static final String NUMERO_ASIENTOS = "numeroAsientos";
	private static final String NUMERO_PASAJEROS = "numeroPasajeros";
	private static final String OCUPACION = "ocupacion";
	private static final String REPORT_DATE_STRING = "reportDateString";
	
	private Collection<String> errorsList = new ArrayList<String>();

	@SuppressWarnings("unchecked")
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
		Connection connection = null;

		Properties properties = new Properties();		
		String url = "";
		String user = "";
		String password = "";
 		
		try 
		{
			properties.load (this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
							//properties.getClass().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
			url = properties.getProperty("urlJasperReport");
			user = properties.getProperty("userJasperReport");
			password = properties.getProperty("passwordJasperReport");
		} 
		catch (FileNotFoundException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		catch (IOException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		
		try 
		{
			connection = DriverManager.getConnection(url, user, password);
		} 
		catch (SQLException e) 
		{
			logger.debug("Error al conectar con DS de informes: " + e.getMessage());
			errorsList.add("Error al conectar con DS de informes: " + e.getMessage());
			e.printStackTrace();
			
		}
		
		JasperPrint jasperPrint = null;
		//String filename = "/es/indra/aodb/informes/web/informes/etc/ListadoOperacionesDiarias.jasper"; segun internet
		JasperReport listadoDiarioOperacionesJasperReport = null;
		
		String tituloInforme = request.getParameter(TITULO_INFORME);
		String compania = request.getParameter(COMPANIA);
		String numeroVuelo = request.getParameter(NUMERO_VUELO);
		String fechaProgramada = request.getParameter(FECHA_PROGRAMADA);
		String estadoActual = request.getParameter(ESTADO_ACTUAL);
		String tipoVuelo = request.getParameter(TIPO_VUELO);
		String tipoAeronave = request.getParameter(TIPO_AERONAVE);
		String numeroAsientos = request.getParameter(NUMERO_ASIENTOS);
		String numeroPasajeros = request.getParameter(NUMERO_PASAJEROS);
		String ocupacion = request.getParameter(OCUPACION);

		
		HashMap parameters = new HashMap();
		parameters.put("tituloInforme", tituloInforme);
		parameters.put("compania", compania);
		parameters.put("numeroVuelo", numeroVuelo);
		parameters.put("fechaProgramada", fechaProgramada);
		parameters.put("estadoActual", estadoActual);
		parameters.put("tipoVuelo", tipoVuelo);
		parameters.put("tipoAeronave", tipoAeronave);
		parameters.put("numeroAsientos", numeroAsientos);
		parameters.put("numeroPasajeros", numeroPasajeros);
		parameters.put("ocupacion", ocupacion);
		
		SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		String reportDateString = request.getParameter(REPORT_DATE_STRING);
		try 
		{
			Date fechaInformeDesde = formatoFecha.parse(reportDateString + " 00:00:00");			
			Date fechaInformeHasta = formatoFecha.parse(reportDateString + " 23:59:59");
			parameters.put("fechaInformeDesde", fechaInformeDesde);
			parameters.put("fechaInformeHasta", fechaInformeHasta);
		} 
		catch (ParseException e) {
			logger.error("No se han transformado bien las fechas desde y hasta de informe");
			errorsList.add("No se han transformado bien las fechas desde y hasta de informe");
			e.printStackTrace();
		}
		
		try 
		{
			//jasperPrint = JasperFillManager.fillReport(filename, parameters, connection); segun internet
			listadoDiarioOperacionesJasperReport = (JasperReport) JRLoader.loadObject(this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportsJasper/ListadoOperacionesDiarias.jasper"));
			jasperPrint = JasperFillManager.fillReport(listadoDiarioOperacionesJasperReport, parameters, connection);
            if (jasperPrint != null) 
            {
                logger.debug("Se va a mostrar el informe");
                //montar informe en JasperViewer y mostrar en el modulo de informes
                JRViewer viewer = new JRViewer(jasperPrint);
                logger.debug("Informe mostrado");
                logger.debug("informe descargado");
                
            } 
            else 
            {
                logger.error("No se ha generado el informe correctamente");
                errorsList.add("No se ha generado el informe correctamente");
            }
		} 
		catch (JRException e1) 
		{
			logger.debug(e1);
			errorsList.add(e1.getMessage());
			e1.printStackTrace();
		}
	}


	public Collection<String> getErrorsList() {
		return errorsList;
	}

	public void setErrorsList(Collection<String> errorsList) {
		this.errorsList = errorsList;
	}
	
}
y en la jsp le llamo de la siguiente manera:

Código:
...
jQuery.ajax({
							   type: 'GET',
							   cache: false,
							   url: '/operacionesDiarias.servlet?reportDateString='+
							   			fechaAComprobar+'&typeFlightSelected='+operacionSeleccionada + nombresParametros,
							   dataType: 'html',
							   success: function (html, textstatus) {
								 alert(html);
								 $('#informe').replaceWith('<div id="informe">\n' + html + '</div>');
							   },
							   error: function (xhr, textEstatus, errorThrown) {//habra que cambiarlo, al ser html hay que hacer otra jsp de errores
									
								alert('xhr'+xhr + ' textEstatus'+ textEstatus + 'error'+errorThrown);
									
							   }
							});
...
pero no llega al servlet. La dirección es correcta, ¿no es verdad? Es la que le he puesto en el mapping del web.xml. Entonces, ¿porqué no llega?

Muchas gracias, un saludo
  #9 (permalink)  
Antiguo 18/07/2011, 10:18
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 8 años
Puntos: 21
Respuesta: no encuentra url para cargar .jasper

La pagina jsp esta a la misma altura que el servlet? No lo creo
Asegurate la ruta, acuerdate que si esta en otra carpeta tieens que poner ../
Tb dime como se llama tu metodo del servlet, deberia llamarse doGet me parece, ahora mismo no me acuerdo pero te lo podria mirar
Oye pelir no te llamaras petri verdad?

Saludos
  #10 (permalink)  
Antiguo 19/07/2011, 02:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
Respuesta: no encuentra url para cargar .jasper

Hola, ya había tenido ese error y no caí, tenía que cambiar /OperacionesDiarias.servlet por /nombreApp/OperacionesDiarias.servlet.

Así consigo que pase por el servlet. Y he conseguido mostrar algo en la jsp, pero no el informe que quiero. Mirando por internet he visto que en el servlet se puede hacer algo como ésto:

Código:
 byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
                response.setContentType("application/pdf");
                response.setContentLength(bytes.length);
                ServletOutputStream ouputStream = response.getOutputStream();
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
pero claro, así lo que me muestra es algo parecido a ésto:

%PDF-1.4 %��3 0 obj <>stream x����� �����m����n�(I�NI貦Ͽ�Kw�`�!�����D������'*��� %��=< �Vw��8����L߫�'����ok�j�����ZM �8(�74 ����D[�j���@��2Xj��Fh�p�Q��i`Bٺw��R��QՀ��*b�ޗ ����� av�D�z��KgF�m���3HwLC�#�+��}� endstream endobj 1 0 obj <>/Parent 4 0 R/Contents 3 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 6 0 obj <>stream x���A� �|�w�K"�Vjm���e�O�ء� 0��� �1��D���էp7��F���6�?�(��D >b��k[U: �����'�ada��y�5�B)�@��f d�h���)x�y�Q�y�GɼQW��W7��M���OۛLKW`���G�B�:~&� aF�#��ɻaF�#ã�wÌ�;j endstream endobj 5 0 obj <>/Parent 4 0 R/Contents 6 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 8 0 obj <>stream x���A� �|�w�K"�V�6n�Ss6������ �{�;����,�Q�S�zqA��2g��$������ 4�6U��`(�d:�5����@�g!�T-!� $~�Cf �b�ru2������3b�fĿ*^5 g� endstream endobj 7 0 obj <>/Parent 4 0 R/Contents 8 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 10 0 obj <>stream x������w��(��������M�m��� &�!��y��h!�QX��zqC��Nh4W�}Q 3Nx�u n��3ݫ<�0��d:�5m��@�g!Ī��J��x�2U ����5��o���A]e�rDy��%�B��9Ҙ�W�n`�>��z�T�\\}���&��fD��3�� �3��f�����i3 endstream endobj 9 0 obj <>/Parent 4 0 R/Contents 10 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 12 0 obj <>stream x������w��(��������M�m��� &�!���Ey��h!�QX��zqC��Nh4W�}Q 3Nx�u n��3ݫ<�0��d:�5m��@�g!Ī��J��x�2U ����=��o���A]e�rDy��%�B��9ҘU+W7�����M��L.�>�Cf���v5e�f��W�� �0#�.�0i3 endstream endobj 11 0 obj <>/Parent 4 0 R/Contents 12 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 14 0 obj <>stream x���A� �|�w�K"�Vjm���e�O�ء� 0��� �1��D���էp7��F���6�?�(��D >b��k[U: �����'�ada��y�5�B)�@��f d�h���)x�y�Q�y�GɼQW��W7��M���OۛLKW`���G�B�:~&� aF�#��ɻaF�#ã�wÌ�;j endstream endobj 13 0 obj <>/Parent 4 0 R/Contents 14 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 16 0 obj <>stream x���A� �|�w�K"�Vjm���e�O�ء� 0��� �1��D���էp7��F���6�?�(��D >b��k[U: �����'�ada��y�5�B)�@��f d�h���)x�y�Q�y�GɼQW��W7��M���OۛLKW`���G�B�:~&� aF�#��ɻaF�#ã�wÌ�;j endstream endobj 15 0 obj <>/Parent 4 0 R/Contents 16 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 18 0 obj <>stream x���A� �|�w�K"�Vjm���e�O�ء� 0��� �1��D���էp7��F���6�?�(��D >b��k[U: �����'�ada��y�5�B)�@��f d�h���)x�y�Q�y�GɼQW��W7��M���OۛLKW`���G�B�:~&� aF�#��ɻaF�#ã�wÌ�;j endstream endobj 17 0 obj <>/Parent 4 0 R/Contents 18 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 20 0 obj <>stream x���A� �|�w�K"�Vjm���e�O�ء� 0��� �1��D���էp7��F���6�?�(��D >b��k[U: �����'�ada��y�5�B)�@��f d�h���)x�y�Q�y�GɼQW��W7��M���OۛLKW`���G�B�:~&� aF�#��ɻaF�#ã�wÌ�;j endstream endobj 19 0 obj <>/Parent 4 0 R/Contents 20 0 R/Type/Page/Resources<>/Font<>>>/MediaBox[0 0 595 842]>> endobj 22 0 obj <>stream x������w��(�T�Q� �q mm4m�}~�� &�!���� 8D��H��=��1��f�Q��� ��}?P��AÄ������US& ��i�v0��

¿Puede alguien decirme la manera correcta de pasarlo? Quiero que se vea en formato pdf, pero dentro de la jsp.

Muchas gracias,
  #11 (permalink)  
Antiguo 19/07/2011, 15:23
 
Fecha de Ingreso: enero-2011
Mensajes: 47
Antigüedad: 7 años, 11 meses
Puntos: 5
Respuesta: no encuentra url para cargar .jasper

Porque no creas un iframe cuyo parametro src sea la url que usas para invocar tu reporte, luego ese iframe lo incrustas en tu pagina jsp...yo de esa manera muestro reportes en pdf en mis aplicaciones.
  #12 (permalink)  
Antiguo 19/07/2011, 20:29
 
Fecha de Ingreso: junio-2011
Mensajes: 39
Antigüedad: 7 años, 5 meses
Puntos: 16
Respuesta: no encuentra url para cargar .jasper

Hola,

Bueno hasta donde tengo entendido no se pueden pasar archivos mediante ajax, es por eso que vez caracteres raros en vez de tu pdf asi que creo que tendras que llamar tu servlet desde el action de un form para que se desplegue correctamente el pdf en el navegador....Bueno, asumiendo que lo estas generando correctamente.

Espero sea de ayuda.
__________________
Saludos desde Colombia.
http://labs.distrit.co
  #13 (permalink)  
Antiguo 20/07/2011, 05:14
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 10 años
Puntos: 1
Respuesta: no encuentra url para cargar .jasper

Lo primero, muchas gracias a todos, habéis sido de gran ayuda. Tenías razón hkadejo con lo del iframe, lo que pasa que yo nunca lo había usado y no sabía ni que existía. Al final, la jsp llama a un servlet al pinchar en el botón de búsqueda, y el servlet consigue el objeto jasperprint que necesito. Y en la jsp, creo un objeto <iframe> dentro de un <div>, y ahí meto el jasperprint. Voy a poner los códigos porque seguro que a alguien le pasa como a mí y le vendrán muy bien. Repito, gracias a todos.

jsp
Código:
...
var operacionSeleccionada = $(document).find('#selectOperacion').val();

  						document.getElementById('informe').innerHTML = '<iframe name="informeFrame"  width="1520" height="550"></iframe>';
  						window.parent.frames["informeFrame"].location="/AODB2/operacionesDiarias.servlet?reportDateString="+fechaAComprobar+"&typeFlightSelected="+operacionSeleccionada + nombresParametros;
						//no se podría poner en este caso "<iframe src='/AODB2/operacionesDiarias.servlet?reportDateString='+variables width='1400' height='550'></iframe>"
						//debido a las comillas (tanto ' como  "), interfieren y no coge las variables para llevarla al action o al servlet

...
servlet
Código:
public class OperacionesDiariasServlet extends HttpServlet
{
	private static final long serialVersionUID = 7154490521050615751L;
	
	private Log logger = LogFactory.getLog(this.getClass());
	private static final String TITULO_INFORME = "tituloInforme";
	private static final String COMPANIA = "compania";
	private static final String NUMERO_VUELO = "numeroVuelo";
	private static final String FECHA_PROGRAMADA = "fechaProgramada";
	private static final String ESTADO_ACTUAL = "estadoActual";
	private static final String TIPO_VUELO = "tipoVuelo";
	private static final String TIPO_AERONAVE = "tipoAeronave";
	private static final String NUMERO_ASIENTOS = "numeroAsientos";
	private static final String NUMERO_PASAJEROS = "numeroPasajeros";
	private static final String OCUPACION = "ocupacion";
	private static final String REPORT_DATE_STRING = "reportDateString";
	
	private Collection<String> errorsList = new ArrayList<String>();

	@SuppressWarnings("unchecked")
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
		Connection connection = null;

		Properties properties = new Properties();		
		String url = "";
		String user = "";
		String password = "";
 		
		try 
		{
			properties.load (this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
							//properties.getClass().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
			url = properties.getProperty("urlJasperReport");
			user = properties.getProperty("userJasperReport");
			password = properties.getProperty("passwordJasperReport");
		} 
		catch (FileNotFoundException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		catch (IOException e2) 
		{
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		
		try 
		{
			connection = DriverManager.getConnection(url, user, password);
		} 
		catch (SQLException e) 
		{
			logger.debug("Error al conectar con DS de informes: " + e.getMessage());
			errorsList.add("Error al conectar con DS de informes: " + e.getMessage());
			e.printStackTrace();
			
		}
		
		JasperPrint jasperPrint = null;
		//String filename = "/es/indra/aodb/informes/web/informes/etc/ListadoOperacionesDiarias.jasper"; segun internet
		JasperReport listadoDiarioOperacionesJasperReport = null;
		
		String tituloInforme = request.getParameter(TITULO_INFORME);
		String compania = request.getParameter(COMPANIA);
		String numeroVuelo = request.getParameter(NUMERO_VUELO);
		String fechaProgramada = request.getParameter(FECHA_PROGRAMADA);
		String estadoActual = request.getParameter(ESTADO_ACTUAL);
		String tipoVuelo = request.getParameter(TIPO_VUELO);
		String tipoAeronave = request.getParameter(TIPO_AERONAVE);
		String numeroAsientos = request.getParameter(NUMERO_ASIENTOS);
		String numeroPasajeros = request.getParameter(NUMERO_PASAJEROS);
		String ocupacion = request.getParameter(OCUPACION);

		
		HashMap parameters = new HashMap();
		parameters.put("tituloInforme", tituloInforme);
		parameters.put("compania", compania);
		parameters.put("numeroVuelo", numeroVuelo);
		parameters.put("fechaProgramada", fechaProgramada);
		parameters.put("estadoActual", estadoActual);
		parameters.put("tipoVuelo", tipoVuelo);
		parameters.put("tipoAeronave", tipoAeronave);
		parameters.put("numeroAsientos", numeroAsientos);
		parameters.put("numeroPasajeros", numeroPasajeros);
		parameters.put("ocupacion", ocupacion);
		
		SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		String reportDateString = request.getParameter(REPORT_DATE_STRING);
		try 
		{
			Date fechaInformeDesde = formatoFecha.parse(reportDateString + " 00:00:00");			
			Date fechaInformeHasta = formatoFecha.parse(reportDateString + " 23:59:59");
			parameters.put("fechaInformeDesde", fechaInformeDesde);
			parameters.put("fechaInformeHasta", fechaInformeHasta);
		} 
		catch (ParseException e) {
			logger.error("No se han transformado bien las fechas desde y hasta de informe");
			errorsList.add("No se han transformado bien las fechas desde y hasta de informe");
			e.printStackTrace();
		}
		
		try 
		{
			//jasperPrint = JasperFillManager.fillReport(filename, parameters, connection); segun internet
			listadoDiarioOperacionesJasperReport = (JasperReport) JRLoader.loadObject(this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportsJasper/ListadoOperacionesDiarias.jasper"));
			jasperPrint = JasperFillManager.fillReport(listadoDiarioOperacionesJasperReport, parameters, connection);
            if (jasperPrint != null) 
            {
                logger.debug("Se va a mostrar el informe");
                //montar informe en JasperViewer y mostrar en el modulo de informes
                //JRViewer viewer = new JRViewer(jasperPrint);
                logger.debug("Informe mostrado");
                logger.debug("informe descargado");
                
                byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
                logger.debug("exportado a bytes");
                response.setContentType("application/pdf");
                response.setContentLength(bytes.length);
                response.setHeader( "Content-disposition", "inline; filename=reporte.pdf");
                ServletOutputStream ouputStream = response.getOutputStream();
                logger.debug("creada la salida ourputStream");
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
                
            } 
            else 
            {
                logger.error("No se ha generado el informe correctamente");
                errorsList.add("No se ha generado el informe correctamente");
            }
		} 
		catch (JRException e1) 
		{
			logger.debug(e1);
			errorsList.add(e1.getMessage());
			e1.printStackTrace();
		}
	}


	public Collection<String> getErrorsList() {
		return errorsList;
	}

	public void setErrorsList(Collection<String> errorsList) {
		this.errorsList = errorsList;
	}
	
}
Un saludo

Etiquetas: encuentra, jasper, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:22.