Jasperreports y Struts 2


En los últimos días he tenido que hacer algunos reportes usando Struts 2 y Jasperreports y de esa experiencia he obtenido un par de tips que nos son sencillos de encontrar en la documentación oficial:

Excluir url’s del procesamiento del filtro de Struts 2

La configuración básica de struts 2 implica el uso de algunos filtros sobre todas las peticiones a nuestra aplicación. Es una pregunta recurrente la forma en la que se puede evitar que el filtro se aplique para ciertas url’s.

Para lograrlo lo mas sencillo es configurar en el archivo struts.xml la constante struts.action.excludePattern para evitar que las expresiones regulares -separadas por coma (,)- del valor sean procesadas por el filtro. Por ejemplo para evitar que las peticiones hacia /images* sean procesadas basta con agregar la siguiente linea al archivo struts.xml:

<constant name="struts.action.excludePattern" value="/images.*?" />

Exportar a html reportes con jasper

En el tutorial acerca del plugin para jasper reports de Struts 2 no nombran la forma en la que es necesario configurar el sistema para que las gráficas de los reportes sean generadas correctamente cuando se exporta en formato html. Para ello es necesario agregar en el web.xml de la aplicación un servlet de procesamiento:

<servlet>  
	  <servlet-name>ImageServlet</servlet-name>  
	  <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>  
	</servlet>  
	  
	<servlet-mapping>  
	  <servlet-name>ImageServlet</servlet-name>  
	  <url-pattern>/images</url-pattern>  
	</servlet-mapping>

Luego se debe especificar la url para que no sea procesada por el filtro de s2 (ver tip anterior) y finalmente configurar el parámetro imageServletUrl en el resultado de la acción para que apunte al url-pattern del servlet de jasper:

@Action(results={@Result(name="success", type="jasper", 
params={"location","${jasperReport}",
"format", "${formatReport}",
"dataSource","dataSourceReport",
"imageServletUrl", "/images?image="})})

Finalmente, si al exportar a pdf el reporte lo visualizan en evince y en cada gráfico hay un gradiente rojo circular, no es cuestión del reporte, es asunto de la aplicación de lectura de pdf en linux😉

Acerca de Nickman

Aunque crítico e Ingeniero (especializado en software), piloto de aeroplano soy (seré).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s