Para hacer el upload de la imagen desde la capa de vista hacia la base de datos, empleo el componente p:fileUplod de Primefaces. El código desde la página xhtml (JSF) es el siguiente:
El backing bean de respaldo:
En donde "current" es una entidad Persona, la cual será persistida en la base de datos, nótese que la imagen se almacena en un byte[]
Ahora, en lo que respecta al reporte, uso la herramienta iReports, y debo comentar que estoy usando un JRBeanCollectionDataSource, es decir, envío una coleccion de objetos java para "alimentar" al reporte, pero no profundizaré mucho en lo que respecta al JRBeanCollectionDataSource pues será motivo de mi próximo post. Habiendo creado el reporte con un "empty DataSource" como muesta la siguiente imagen:
Debemos crear un field equivalente al atributo destinado a la fotografía de la entidad:
Tómose en cuenta que en las propiedades de dicho field, "Field Class" se declarará como java.lang.Object.
Ahora, desde la Paleta de componentes, arrastramos el elemento "Image" hacia el reporte:
Y en las propiedades de la imagen:
En "Image Expression" colocamos el siguiente código:
net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte []) $F{fotoPer})
Y al generar el reporte, ya podemos mostrar una imagen cagada desde una base de datos: :)

No hay comentarios:
Publicar un comentario