Thursday, December 08, 2005

Reportes con JasperReports y Webwork

En mi projecto de campusip utilizo Webwork como framework para la web. Ahora necesito crear unos reportes (comencé con lo más sencillo :-). Lo bueno de usar Webwork es que ya viene integrado el JasperReport y por lo tanto sencillo de utilizar. Los reportes jasper son simples xml (o si como no simples :-) los cuales se compilan y se llenan de una fuente de datos.

Primero solo crea un clase que herede de ActionSupport y que por supuesto implemente un DAO para el acceso a los datos (Esto es a tu manera). Recuerda crear una instancia de tipo colección como: List, ArrayList, etc. la cual será utilizada para llenar el reporte. ver código.

Segundo creas una entrada en el xwork.xml del .action, debes pasarle tres parametros: format, datasource y location. ver código. Tendrás que crear una entrada de .action por cada formato que desees el reporte. (PDF, HTML, XLS, CSV y XML)

Tercero diseña el reporte por supuesto (puedes utilizar unas de varias herramientas gráficas que existen) utilizando IReport o JasperAssistant, para diseñar un lindo reporte :-), no tengo que decir que ahi que compilar el reporte. (tu eliges el método, yo prefiero con ant) .

Cuarto probarlo para ver si funciona y claro que funciona :-P



package net.sf.campusip.web.webwork.action.beca;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork.Preparable;

import net.sf.campusip.domain.personas.Beca;
import net.sf.campusip.web.webwork.action.AbstractAction;

/**
* @author vns
*
*/
public class PrintBecasReport extends AbstractAction implements Preparable {
private List becas = new ArrayList();

/**
*
*/
public PrintBecasReport() {
super();
}

public Object getModel() {
return this.becas;
}

/* (non-Javadoc)
* @see com.opensymphony.xwork.Preparable#prepare()
*/
public void prepare() throws Exception {
becas = jcolegio.getAll(Beca.class);
}

/**
* @return Returns the becas.
*/
public List getBecas() {
return becas;
}

}
========================

< name="reportbecas-pdf" class="net.sf.campusip.web.webwork.action.beca.PrintBecasReport">
< name="success" type="jasper">
< name="location">/mantenimiento/beca/becas_report.jasper
< name="dataSource"> becas
< name="format"> PDF


==========================



http://jasperreports.sourceforge.net/

2 comments:

favrycio said...

cual seria el codigo del jsp?

Victor Sosa said...

No es jsp es una respuesta http generada con el pdf, el cual es descargado por el navegador ( o si esta confiurado para abrir el pdf lo presenta dentro del mismo).