Problemas com imagem no primefaces!

pessoal andei procurando e vi que meu problema é de muita gente, ja vi em varios post e de vairos foruns e nunca com a solução, estou ate com medo de realmente nao ter jeito, mas vamos la, eu estou tentando colocar uma galeria de imagem e com stream, sendo que nao consigo que mostre as minhas imagens de jeito algum, só funciona se minha imagem tiver no meu projeto o problema é que elas nao estarão, elas irão ficar num repositorio especifico, e nem com o caminho relativo e nem com stream estou conseguindo

o codigo segue a abaixo

<p:galleria effect="#{imagemBean.effect}" effectSpeed="1000">
     <ui:repeat value="#{imagemBean.pecas}" var="peca">
	         <p:graphicImage value="#{imagemBean.image}" />
     </ui:repeat>
</p:galleria>

//meuManagedBean

public StreamedContent getImage() throws FileNotFoundException {
		HttpServletRequest requestScope = (HttpServletRequest) FacesContext.
				getCurrentInstance().getExternalContext().getRequest();		
		Pecas peca = (Pecas)requestScope.getAttribute("peca");
                if(peca!=null){
			File file = new File(peca.getArquivo());//pega o caminho relativo ex:/opt/imagem/xyz.jpg
			System.out.println(file.exists());
			FileInputStream stream = new FileInputStream(file);
			StreamedContent image = new DefaultStreamedContent(stream, "image/jpeg");			
                }
        return image;
    }

mas eu fiz um teste forcando sempre a mesma imagem e funcionou ! eu quero saber o pq ? nao faco a minima ideia

public StreamedContent getImage() throws FileNotFoundException {
		HttpServletRequest requestScope = (HttpServletRequest) FacesContext.
				getCurrentInstance().getExternalContext().getRequest();		
		Pecas peca = (Pecas)requestScope.getAttribute("peca");
                if(peca!=null){
			File file = new File("/opt/imagem/minhaImage.jpg");
			System.out.println(file.exists());
			FileInputStream stream = new FileInputStream(file);
			StreamedContent image = new DefaultStreamedContent(stream, "image/jpeg");			
                }
        return image;
    }

alguem ja passou por esse problema e conseguiu resolver ?

Olá! Sei que já faz um tempo que essa dúvida foi colocada no ar… porém agora me encontro com o mesmo problema.
Tenho imagens gravadas no banco de dados, e quando eu seleciono apenas 1 objeto, consigo ver a imagem sem problemas…
mas quando jogo uma lista de objetos dentro de um ui:repeat as imagens não aparecem de jeito nenhum!
Gostaria de saber se vc encontrou uma solução pra isso?

Grata.

po gata te falar na epoca q eu fiz isso, o primefaces estava com alguns bugs, eu entrava no forum do cara e passava esses bugs para ele, na epoca nao tive solucao usando jsf, eu resolvi fzd um servlet q recebia o caminho e eu dava um response com os bytes !

eu ja tive o mesmo problema… quando jogava no repeat nao vinha d jeito nenhum…
ai eu fiz um servlet e resolvi o problema

E como eu faria este servlet? é que estou precisando utilizar o componente p:galleria do PrimeFaces =S

vc faz o servlet pegando as imagens pelo id
vou colar o código do que eu usei aqui, e você faz a adaptação de acordo com sua necessidade…

[code]import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import produto.ProdutoDAO;

/**
*

  • @author AlanDiniz
    */
    public class ImagemServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    try {
    response.setContentType(“image/jpg”);
    String imgName = request.getPathInfo();
    ProdutoDAO pDao = new ProdutoDAO();
    ServletOutputStream out = response.getOutputStream();
    out.write(pDao.pegaFoto(Integer.parseInt(imgName.substring(1))));
    out.close();
    } catch (Exception ex) {
    response.sendError(404);
    Logger.getLogger(ImagemServlet.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
    return “Short description”;
    }//
    }
    [/code]

Vou dar uma olhada direito no código e ver o que eu consigo fazer! =)
Obrigada alandiniz!

denada… sempre que precisar estou a disposição =)

sobre o servlet ele funciona assim…
vc vai acessar
ex.:
http://…/ImagemServlet/1

onde “1” eh o ID da imagem no banco…

entao na galeria vc vai xamar o servlet passando o id…

bom… em partes eu descobri como fazer a imagem aparecer, a resposta está aqui: http://pobrecomputeiro.wordpress.com/2010/11/10/datatable-com-imagem-em-primefaces-e-jsf/

o meu único problema é que o meu parametro está passando null … :S

A idéia do Servlet foi muito boa… vou tentar aqui pra ver se da certo…

Acho que ela se encaixa perfeitamente utilizando os componentes do primefaces que trabalham com imagens

Off-topic
Desculpa mais alguem poderia ver meu topico :


Preciso resolver esse problema urgente para poder continuar meu estudo.

alandiniz, parabéns pela idéia do servlet hehe
tava quebrando a cabeça aqui a dias e usar um servlet nem passou pela minha cabeça
fiz algumas alterações no servlet mas a idéia funcionou certinho

vlw

Bom Galera, sou novo no Fórum e também nessa área.
Mas fiz uma projetinho aqui que acho que ajudará vocês.
Sei que o tópico é antigo, mas vai que alguém ainda precisa dessa ajuda.
Upei meu projeto para minha página no Skydrive e liberei ele como público, quem quiser baixá-lo e dar uma olhada no source, sinta-se a vontade.
Eu precisava criar um sisteminha para UPAR uma imagem para um pasta, salvar essa imagem da pasta em um DB e depois exibir essas imagens no browser.
É bem simples, de bem fácil entendimento o Source ( eu acho e espero que seja…ehuehuhe) .

abração ai e espero ter ajudado, qualquer coisa entrem em contato.

LINK do Skydrive: https://skydrive.live.com/redir.aspx?cid=1d15980f7d9517d2&resid=1D15980F7D9517D2!160&parid=root

OBS: Só fiquem atentos na hora de compilar que o index tá em branco…nem fiz ele ainda, só fiz a parte funcional mesmo…então, alterem o xml para iniciar em uma das outras páginas ( que são três só, o index, galleria e upload_image) ou então criem um index ai qualquer e tudo certo…heuheuheuhe

Valeu lekohlrausch, o problema é antigo mas estamos passando por ele aqui também, estou baixando seu codigo

abraço

Semanas atrás passei pelo mesmo problema e resolvi usando o exemplo que a andi.brunetta citou no link abaixo:

http://pobrecomputeiro.wordpress.com/2010/11/10/da...om-imagem-em-primefaces-e-jsf/

Usei a mesma lógica, apenas mudei de a parte de percorrer toda lista em cada render de imagem.