clever
Março 28, 2012, 2:08pm
#1
Olá pessoa, tenho um problema para exibir imagens que estão salvas no banco. Estou usando o componente p:graphicImage do PrimeFaces 3.1 para exibir as imagens.
XHTML:
<p:column id="clnFoto" sortBy="#{item.foto}" filterBy="#{item.foto}"
style="max-width: 140px; min-width: 140px; overflow: hidden">
<f:facet name="header">
<h:outputText id="optFoto" value="#{msgs.optTableFoto}" />
</f:facet>
<p:graphicImage value="#{teste.paint}" />
</p:column>
Bean:
public void paint(OutputStream out, Object object) throws IOException {
try {
ByteArrayInputStream byString = new ByteArrayInputStream(veiculo.getFoto());
BufferedImage img = ImageIO.read(byString);
ImageIO.write(img, "jpg", out);
} catch (IOException e) {
e.printStackTrace();
}
}
O problema é que da o seguinte erro:
GRAVE [javax.enterprise.resource.webcontainer.jsf.application] (http–127.0.0.1-8080-1) Error Rendering View[/pages/cadastro/veiculo/veiculo/cadastroVeiculo.xhtml]: javax.el.PropertyNotFoundException: /pages/cadastro/veiculo/veiculo/cadastroVeiculo.xhtml @218 ,48 value="#{teste.paint}": The class ‘br.com.transbr.managedbean.veiculo.Teste’ does not have the property ‘paint’.
É como se não existisse o método. Alguém tem uma ideia do que pode ser?
O JSF está procurando um método paint() mas o seu método está recebendo parâmetros.
Por isso que ele fala que não encontrou nenhum método paint.
clever
Março 29, 2012, 6:19am
#3
Mesmo sem os paramentros ele da o mesmo erro:
[code]public void paint() {
ImageIO.write(img, “jpeg”, out);
OutputStream out = null;
try {
ByteArrayInputStream byString = new ByteArrayInputStream(veiculo.getFoto());
BufferedImage img = ImageIO.read(byString);
ImageIO.write(img, "jpg", out);
System.out.println("passou");
} catch (IOException e) {
e.printStackTrace();
System.out.println("falhou");
}
}[/code]
Cara, se você usa a tag “value” ele espera um método que retorne valor…
<p:graphicImage value="#{teste.paint}" />
Padrão javabean, você tem que ter um getPaint que retorne algo. Atualmente seu método está como void.
clever
Março 29, 2012, 9:59am
#5
Tem criar um Servlet e depois no método do Bean chamna-lo:
public String getExibeImagem(){
return "http://localhost:8080/transbr/ImagemServlet?idVeiculo=";
}