Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Jasperreport + Spring +problema de contenido

Tengo el siguiente controller spring para generar un pdf usando jasperreport 4.5.0 y el reporte lo cree con ireport 4.5.0

@RequestMapping(value = "/xx/pdf/{id}",
method = RequestMethod.GET)
public ModelAndView doSalesReportPDF(ModelAndView modelAndView, @PathVariable Long id,
HttpServletRequest request,
HttpServletResponse response) {

logger.debug("Generando xxx");

// Getting servlet request URL
String url = request.getRequestURL().toString();x
String servletPath = request.getServletPath();
String pathInfo = request.getPathInfo();

url = url.replaceAll(pathInfo, "");
url = url.replaceAll(servletPath, "");

..................

..........


Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("datasource", new JRBeanCollectionDataSource(abono));

modelAndView = new ModelAndView("pdfx", parameterMap);

//response.setHeader("Pragma", "public");
//response.setHeader("Cache-Control", "max-age=0");
response.setHeader("Content-Disposition", "inline; filename=\"xxx_"
+ evolucion.getNumeracion() +"_"
+ Formatos.fechaHoraFac(new Date()) + ".pdf\"");//attachment o inline

return modelAndView;
}

En general funcionaba bien en todos los navegadores pero ahora no funciona en la ultima version de chrome y de firefox,

en chrome dice esto:
Se han recibido encabezados duplicados desde el servidor.
en firefox esto:
Error de contenido corrupto. La página que está tratando de ver no puede mostrarse porque se detectó un error en la transmisión de los datos.

No he encontrado nada de información en la red al respecto y ya he tratado cambiando las versiones del jasperreport y del ireport pero nada, cualquier ayuda es bien recibida.

saludos,

diciembre 19, 2011 | Unregistered CommenterAndres

A la final quite todos los response.setHeader y me devolví a una verison vieja del jasper y funcionó

diciembre 26, 2011 | Unregistered CommenterAndres

El problema esta en el duplicado de del response header. yo resolví el problema. Tuve crear una clase JasperReportsMyPDFView que extende JasperReportsPdfView y sobreescribi el metodo onInit() de la siguiente manera


public class JasperReportsMyPDFView extends JasperReportsPdfView {
/* TODO:
* Metodo sobreescrito para resolver el problema de
* duplicado de headers
*/
@Override
public void onInit() {
setHeaders(new Properties());
}
}

Con esto, limpio los headers por defecto. Esta también puedes hacerlo para las otras clases que se utilizan para exportar a html y xls.

Espero que este aporte sirva.
Saludos.

febrero 2, 2012 | Unregistered CommenterrObErt