
Mostrar imagen con primefaces desde bd
Publicado por Martin (2 intervenciones) el 09/02/2015 02:15:55
Hola a todos:
Necesito saber como mostrar imagenes con primefaces, donde la ruta de ubicacion de dicha imagen esta guardada en una base de datos mysql.
Lo que tengo hecho es esto:
en la pagina jsf.
En el backingTematicas cargo la imagen de la sig manera:
Y en la base de datos, en la tabla tematicas me guarda lo siguiente:
id nombre img_path activa
24 Comer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\cocina.png 1
25 Banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\toilet.png 0
26 leer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/Bookmark.png 0
27 ir al banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\resources\tematicas/toilet.png 0
28 comunicar C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/comunicador.png 0
Espero su ayuda!!
Necesito saber como mostrar imagenes con primefaces, donde la ruta de ubicacion de dicha imagen esta guardada en una base de datos mysql.
Lo que tengo hecho es esto:
1
2
3
4
5
6
7
<h:panelGroup>
<h:form enctype="multipart/form-data">
<p:dataGrid value="#{backingTematicas.tematicas}" var="tematica" columns="4">
<p:graphicImage id="image" value="/#{tematica.img_path}" cache="false"/>
</p:dataGrid>
</h:form>
</h:panelGroup>
en la pagina jsf.
En el backingTematicas cargo la imagen de la sig manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public void upload()throws IOException
{
InputStream inputStream=null;
OutputStream outputStream=null;
try
{
if(this.file.getSize()<=0)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "Ud. debe seleccionar un archivo de imagen \".png\""));
return;
}
if(!this.file.getFileName().endsWith(".png"))
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "El archivo debe ser con extensión \".png\""));
return;
}
if(this.file.getSize()>2097152)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:", "El archivo no puede ser más de 2mb"));
return;
}
ServletContext servletContext (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
String carpetaImagen=(String)servletContext.getRealPath("/imagen");
tematica.setImg_path(carpetaImagen+"/"+file.getFileName());
outputStream=new FileOutputStream(new File(carpetaImagen+"/"+"nombre"));
inputStream=this.file.getInputstream();
int read=0;
byte[] bytes=new byte[1024];
while((read=inputStream.read(bytes))!=-1)
{
outputStream.write(bytes, 0, read);
}
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "La imagen se cargo correctamente", "Correcto"));
}
catch(Exception ex)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error fatal:", "Por favor contacte con su administrador "+ex.getMessage()));
}
finally
{
if(inputStream!=null)
{
inputStream.close();
}
if(outputStream!=null)
{
outputStream.close();
}
}
}
Y en la base de datos, en la tabla tematicas me guarda lo siguiente:
id nombre img_path activa
24 Comer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\cocina.png 1
25 Banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen\toilet.png 0
26 leer C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/Bookmark.png 0
27 ir al banio C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\resources\tematicas/toilet.png 0
28 comunicar C:\Users\Sandoval\Documents\NetBeansProjects\comunicadorOriginal\build\web\imagen/comunicador.png 0
Espero su ayuda!!
Valora esta pregunta


0