Carregando Imagem do Banco com o Seam JSF

10 respostas
J

Pessoal,
Estou utilizando o seguinte codigo pra carregar a imagem do banco de dados e não está sendo mostrado nada no HTML. Já verifiquei e a imagem está salva no banco de dados.

Alguem sabe o que posso estar fazendo de errado ou de algum outro modo para fazer isso?

 Obrigado :)
<s:decorate id="imgBanner" template="layout/display.xhtml">
            <ui:define name="label">Banner 2</ui:define>
            <s:graphicImage alt="as" value="#{empresaImgHome.instance.imgBanner}" />
       </s:decorate>
@Entity
@Table(name = "empresa_img")
@SequenceGenerator(name="SEQUENCE_ID", sequenceName="empresa_img_id_empresa_img_seq", allocationSize=1)
public class EmpresaImg implements java.io.Serializable {

	private int idEmpresaImg;
	private Empresa empresa;
	private byte[] imgBanner;

	@Column(name = "img_banner")
	public byte[] getImgBanner() {
		return this.imgBanner;
	}

	public void setImgBanner(byte[] imgBanner) {
		this.imgBanner = imgBanner;
	}

}

10 Respostas

B

Esse objeto empresaImgHome é uma instancia válida de algum objeto mapeado com a anotação @Name?? Se for ainda tem que verificar se ele tem uma propriedade chamada instance do tipo EmpresaImg…

Alessandro_Lazarotti

“empresaImgHome.instance” lhe dará uma nova instancia de EmpresaImg (like new EmpresaImg()), a qual possui o atributo imgBanner nulo.

P

tente usar a anotação

@Lob
private byte[] imgBanner;
J

Alessandro Lazarotti:
“empresaImgHome.instance” lhe dará uma nova instancia de EmpresaImg (like new EmpresaImg()), a qual possui o atributo imgBanner nulo.

Isso não acontece, visto que os outros atributos de empresaImgHome.instance são impressos na tela, normalmente. Ou seja, ele não faz ‘new EmpresaImg()’, ele pega o objeto EmpresaImgHome que está no contexto.

J

Puka:
tente usar a anotação

@Lob
private byte[] imgBanner;

Ao tentar usar a anotação @Lob em imgBanner, obtive a seguinte exceção:

Caused by: org.hibernate.HibernateException: Wrong column type in public.empresa_img for column img_banner. Found: bytea, expected: oid
J

Se eu utilizar

<h:outputText value="#{empresaImgHome.instance.imgBanner}" />

obtenho a saída: [b][i] na tela

Nao sei o que fazer, uma coisa tão simples e tanta complicação assim no jsf/seam.

Agradeço a quem puder me ajudar.

Obrigado.

B

bom eu já tive problemas com a tag graphicImage criando uma nova conversação, e isso eu resolvia com um s:conversationId

porém eu utilizo <h:graphicImage e não a tag do seam, mas nao custa tentar né

&gt;&lt;s:decorate id="imgBanner" template="layout/display.xhtml"&gt;
            &lt;ui:define name="label"&gt;Banner 2&lt;/ui:define&gt;
            &lt;s:graphicImage alt="as" value="#{empresaImgHome.instance.imgBanner}"&gt;
                        &lt;s:conversationId /&gt;
            &lt;/s:graphicImage&gt;
       &lt;/s:decorate&gt;

good luck

B

bom eu já tive problemas com a tag graphicImage criando uma nova conversação, e isso eu resolvia com um s:conversationId

porém eu utilizo <h:graphicImage e não a tag do seam, mas nao custa tentar né

&gt;&lt;s:decorate id="imgBanner" template="layout/display.xhtml"&gt;
            &lt;ui:define name="label"&gt;Banner 2&lt;/ui:define&gt;
            &lt;s:graphicImage alt="as" value="#{empresaImgHome.instance.imgBanner}"&gt;
                        &lt;s:conversationId /&gt;
            &lt;/s:graphicImage&gt;
       &lt;/s:decorate&gt;

good luck

viniciusffj

Estou com um problema tb com esta tag.
Pelo menos eu acho que é com ela.
Eu uso o banco de dados PostgreSQL e uso o seam
na hora de armazenar, fica uns numero las, suponho que esje certo, já que eu uso byte[]
mas na hora de mostra, não sai nada, muito estranho.

<s:graphicImage value="#{marca.foto}"> </s:graphicImage>

Valeu galera

ednardoGuitar

Caros amigos, uma das soluções é :
1º vc pode criar um diretorio e descarrega-las todas la , ou seja, uma pasta temporaria
//Exemplo
pasta:
Fotos //Vazia

// Realiza consulta, retornando uma lista de todos os Arrays de Bytes e depois converte esses arrays para o tipo de foto(jpg, gif …)

2º Pegue o nome referente a pasta e o nome da imagem e carrege

É simples, basta um pouco de att.

Abraços, até mais.

Criado 19 de abril de 2011
Ultima resposta 16 de mai. de 2012
Respostas 10
Participantes 6