[PrimeFaces] Problema com exibição de p:graphicImage

1,455 views
Skip to first unread message

Orlando Xavier

unread,
Nov 21, 2012, 8:44:46 AM11/21/12
to jav...@googlegroups.com
Bom dia a todos.

Tenho uma p:galleria, onde apresento algumas p:graphicImage, cujo path da imagem vem de uma tabela da base de dados.
As imagens não estão sendo exibidas, então quando visualizei o código fonte da página, detectei que o caminho está vindo errado por uma manipulação automática do PrimeFaces.

O caminho da imagem seria, por exemplo: /opt/apache-tomcat/webapps/imagens/nome_do_projeto/modulo_do_projeto/imagem.jpg.
No source da página, o caminho está: /nome_do_projeto/opt/apache-tomcat/webapps/imagens/nome_do_projeto/modulo_do_projeto/imagem.jpg.

Ou seja, o primefaces está pegando a imagem como se ela estivesse em algum diretório interno do projeto, quando na verdade não está.

Se eu tirar a '/' antes da string, ficando opt/apache-tomcat/webapps/imagens/nome_do_projeto/modulo_do_projeto/imagem.jpg, o PrimeFaces não coloca o nome do projeto antes da string, mas o caminho fica incompleto e errado.

Também já tentei pegar o real path do FacesContext, mas piora tudo, a value da p:graphicImage fica: /home/usuario/NetBeansPorjects/nome_do_projeto/build/web/opt/apache-tomcat/...


Alguém sabe como resolver isso?
Abraço!


--
Orlando Xavier

www.orlandoxavier.com
Twitter: @orlandoxavier
(83) 8765-4696 - (83) 9692-3676
Linux User #500540

Carlos Lira

unread,
Nov 21, 2012, 8:53:14 AM11/21/12
to jav...@googlegroups.com
Não é possível exibir uma imagem que está fora do contexto da aplicação com o p:graphicImage passando apenas o caminho da imagem.
Neste caso você poderia usar o StreamedContent (http://www.primefaces.org/showcase-labs/ui/dynamicImage.jsf) ou um servlet para exibir as imagens


--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Visite este grupo em http://groups.google.com/group/javasf?hl=pt-BR.
 
 



--

Carlos Lira
car...@carloslira.biz
car...@sinapix.com.br
Skype:  carlosliracl
@CarlosLiraJava


Orlando Xavier

unread,
Nov 21, 2012, 9:45:08 AM11/21/12
to javasf
Beleza, Carlos.
Valeu! o/

Paulo Gomes

unread,
Nov 22, 2012, 10:04:00 AM11/22/12
to jav...@googlegroups.com
Cara se vc armazenou sua foto no BD com byte[], usa isso que funciona:

private StreamedContent fotoGerada;

ByteArrayInputStream inputStream = new ByteArrayInputStream(byteFoto[]);           
fotoGerada = new DefaultStreamedContent(inputStream, "image/jpeg");           

StreamedContent é uma classe do Prime faces como o Carlos falou.


Atenciosamente,
 
Francisco Paulo Ferreira Gomes.
Desenvolvedor Oracle/PHP/Java

Orlando Xavier

unread,
Nov 23, 2012, 8:45:58 AM11/23/12
to javasf
Paulo, resolvi criando um servlet para buscar o path da imagem solicitada e retornar o arquivo para o client-side.

[]s

Frank Maia

unread,
Mar 21, 2014, 4:16:11 PM3/21/14
to jav...@googlegroups.com
OLá boa noite sou angolano e preciso de uma ajuda n consigo visualizar imagem que esta na base de dados em um datatable

xhtml para visualizar a foto

                                  <h:column headerClass="colunasDT">
                                            <f:facet name="header">
                                                <h:outputText value="Foto" />
                                            </f:facet>
                                            <p:graphicImage height="50px;" width="50px;" alt="image" value="#{funcionario.idDadosPessoais.fotografia}" cache="false">
                                            </p:graphicImage>
                                        </h:column>

managedbean

@SessionScoped

/**
     * **************************************************
     * Gravar Fotografia
     * *************************************************
     */
    public String handleFileUpload(FileUploadEvent event) {

        try {
            OutputStream out = null;
            InputStream in = event.getFile().getInputstream();

            ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
            HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();

            FacesContext aFacesContext = FacesContext.getCurrentInstance();
            ServletContext context = (ServletContext) aFacesContext.getExternalContext().getContext();

            String realPath = context.getRealPath("/");

            File file = new File(realPath + "/img/");
            file.mkdirs();

            caminho = realPath + "/img/" + event.getFile().getFileName();
            out = new FileOutputStream(caminho);
            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = in.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            out.flush();
        } catch (Throwable ex) {
            ex.printStackTrace();
        }
        System.out.print("Este é o caminho-->" + caminho);
        redirecionarPara("RH_InserirFuncionario.xhtml");
        return caminho;

    }


ele poe a imagem na pasta e grava o caminho no campo fotografia da base de dados mas n consigo visualizar a imagem e se eu fizer um deploy no projecto a pasta criada e a referida fotografia desaparece do projecto e n sei porque

Frank Maia

 
 

Reply all
Reply to author
Forward
0 new messages