Inicial > JSF, PrimeFaces > JSF 2 – PRIMEFACES – P:GALLERIA – EXEMPLO DE GALERIA DE FOTOS

JSF 2 – PRIMEFACES – P:GALLERIA – EXEMPLO DE GALERIA DE FOTOS


Olá pessoal,

Um componente muito interessante para exibição de imagens é o galleria do primefaces. Irei explicar neste post como podemos usar este componente para exibir as imagens enviadas ao servidor e armazenadas no banco de dados.

Para nosso exemplo utilizarei:

Netbeans 7.0.1
Primefaces 3.0M3
Commons-io 2.0.1
Commons-fileupload 1.2.2

Além disso iremos usar a seguinte base de dados:

Iremos armazenar eventos e as fotos dos eventos. Salvaremos o nome do evento e sua data e ainda a imagem, uma descrição, a ordem que ela aparecerá e o evento ao qual esta imagem pertence.

Nosso projeto consistirá de um sistema que cadastraremos o evento e depois poderemos inserir imagens utilizando o fileupload ou visualizar as imagens com o galleria.

Veja a estrutura do projeto no netbeans, inclusive com as libs usadas:



Criamos uma estrutura com pacotes para separar DAO, modelos, fábrica de conexões, os managedbeans, etc. Abaixo irei colocar o código e explicar cada classe. No noss projeto irei utilizar o componente p:fileupload para enviar e gravar e capturar as imagens para que sejam salvas no banco de dados. Como ja vimos em dois posts como configurar este componente, irei falar dele com menos detalhes, afinal, a ênfase deve ser dada ao uso do galleria.

Classe Evento.java

public class Evento {

    private Long id;
    private String nome;
    private Date data;
    private List<Foto> fotos = new ArrayList<Foto>();

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public List<Foto> getFotos() {
        return fotos;
    }

    public void setFotos(List<Foto> fotos) {
        this.fotos = fotos;
    }
}

Classe Foto.java


public class Foto {

    private Long id;
    private byte[] imagem;
    private int ordem;
    private String descricao;
    private Evento evento = new Evento();

    public Evento getEvento() {
        return evento;
    }

    public void setEvento(Evento evento) {
        this.evento = evento;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public byte[] getImagem() {
        return imagem;
    }

    public void setImagem(byte[] imagem) {
        this.imagem = imagem;
    }

    public int getOrdem() {
        return ordem;
    }

    public void setOrdem(int ordem) {
        this.ordem = ordem;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
}

As duas classes acima representam as tabelas Eventos e Fotos respectivamente. Primeiramente iremos abordar a cricação da estrutura para cadastrarmos os eventos, enviarmos e armazenarmos as fotos no banco.

No envio das fotos utilizaremos o componente fileupload, como nosso foco é o componente galleria não irei dar muitos detalhes da configuração do fileupload, para isso visite nosso outro post https://benignosales.wordpress.com/2011/03/17/jsf-2-0-primefaces-2-2-fileupload-com-imagecropper/ . Nele você encontrará todas as informações necessárias para configurar o componente de envio de arquivos.

Com o fileupload configurado, iremos criar nosso managed bean @SessionScoped, ele deve ser deste tipo para funcionar com o componente de envio de arquivos. Abaixo vamos conferir o código do gerenciador, para uma melhor visualização suprimi os getters e setters das variáveis.


@ManagedBean
@SessionScoped
public class GaleriaBean {

    private List<Evento> eventos = new ArrayList<Evento>();
    private Evento evento = new Evento();
    private Evento eventoSelecionado = new Evento();
    private EventoDAO eventoDAO = new EventoDAO();
    private FotoDAO fotoDAO = new FotoDAO();
    private Foto foto = new Foto();
    private StreamedContent imagem = new DefaultStreamedContent();
    private List<Foto> fotos = new ArrayList<Foto>();

    /* getters e setters */

    public void setFoto(Foto foto) {
        this.foto = foto;
    }

    public void salvaEvento() {
        try {
            eventoDAO.salva(evento);
            evento = new Evento();
            eventos = eventoDAO.listaTodos();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Evento adicionado", "Evento adicionado"));
        } catch (SQLException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void salvaFotos() {
        try {
            fotoDAO.salva(foto);
            foto = new Foto();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Foto adicionada", "Foto adicionada"));
        } catch (SQLException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void enviaImagem(FileUploadEvent event) {
        try {
            imagem = new DefaultStreamedContent(event.getFile().getInputstream());
            foto.setEvento(eventoSelecionado);
            foto.setImagem(event.getFile().getContents());
        } catch (IOException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void criaArquivo(byte[] bytes, String arquivo) {
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(arquivo);
            fos.write(bytes);
            fos.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void listaFotosEvento() {
        try {
            fotos = fotoDAO.buscaPorEvento(eventoSelecionado);
            for (Foto f : fotos) {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
                String nomeArquivo = f.getId().toString() + ".jpg";
                String arquivo = scontext.getRealPath("/temp/" + nomeArquivo);
                criaArquivo(f.getImagem(), arquivo);
            }
        } catch (SQLException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public GaleriaBean() {
        try {
            eventos = eventoDAO.listaTodos();
        } catch (SQLException ex) {
            Logger.getLogger(GaleriaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Temos uma coleção do tipo Evento na qual iremos jogar todos os eventos cadastrados no banco para exibirmos em um datatable, dois objetos do tipo Evento um para o cadastro e outro para a visualização e envio de imagens, um objeto Foto e uma coleção Foto, bem como um objeto StreamedContent que serve para aualizarmos dinamicamente um p:graphicimage e temos os DAOs.

Outro ponto, não iremos colocar o código dos DAOs, pois você pode trabalhar com o que quiser para a camada de persistencia, no meu caso, usei jdbc puro sem nenhuma framework ORM. Caso alguem queira os DAOs basta postar um comentário que envio.

Nos métodos temos o salvaEvento para persistirmos os eventos no banco e temos o salvaFotos para guardarmos as imagens no banco de dados. Além disso, o enviaImagem que é o listener do componente fileupload, ou seja, sempre que enviarmos um arquivo o sistema chama este método para “tratarmos” o arquivos como quisermos. Aqui, preenchemos o objeto StreamedContent imagem para exibir a imagem enviada na tela e setamos o objeto foto para que possamos salvá-lo depois. Mais abaixo, temos o método criaArquivo que serve para criar o arquivo físico a partir de um array de bytes e um caminho específico e o método listaFotosEvento, com o qual criamos os arquivos a serem exibidos na galeria. O grande lance é justamente esse, os arquivos devem ser criados dinamicamente e jogados dentro de uma pasta para serem exibidos na tela, pois o graphicImage não suporta conteudos dinamicos em listas, como um datatable ou mesmo no galleria.

Com isso, passamos para a nossa view. Veja o código abaixo:

Obs.: Crie uma pasta dentro da pasta web para armazenar temporariamente as imagens. No nossa caso, criei a pasta temp.

    <h:head>
        <title>Exemplo Galleria - Benigno Sales</title>
    </h:head>
    <h:body style="background-color: #CCCCCC">
        <h:form prependId="false" enctype="multipart/form-data">
            <p:panel id="dadosEvento" header="Exemplo Galeria" style="width: 600px;">
                <p:growl/>
                <h:panelGrid columns="2">
                    <h:outputText value="Nome"/>
                    <p:inputText value="#{galeriaBean.evento.nome}" size="40"/>
                    <h:outputText value="Data"/>
                    <p:calendar value="#{galeriaBean.evento.data}"
                                timeZone="GMT-3"
                                navigator="true"
                                pattern="dd/MM/yyyy"
                                locale="pt_BR"/>
                    <p:commandButton value="Salvar" action="#{galeriaBean.salvaEvento()}" update="tabelaEventos dadosEvento"/>
                    <p:commandButton value="Limpar" onclick="form.reset()"/>
                    <p:ajaxStatus>
                        <f:facet name="start">
                            <h:outputText value="aguarde..."/>
                        </f:facet>
                        <f:facet name="complete">
                            <h:outputText value=""/>
                        </f:facet>
                    </p:ajaxStatus>
                </h:panelGrid>
            </p:panel>
            <p:dialog id="dialogFotos" position="top" widgetVar="dialogFotos" modal="true" minWidth="600" minHeight="500">
                <p:fileUpload fileUploadListener="#{galeriaBean.enviaImagem}"
                              update="imagemTmp"
                              cancelLabel="Cancelar"
                              fileLimit="100000"
                              fileLimitMessage="Imagem muito grande"
                              label="Selecionar"
                              invalidFileMessage="Tipo de imagem inválido"
                              invalidSizeMessage="Imagem muito grande"
                              uploadLabel="Enviar"
                              allowTypes="/(\.|\/)(jpe?g|png)$/">

                </p:fileUpload>
                <p:outputPanel id="dadosFoto">
                    <h:panelGrid>
                        <p:graphicImage cache="false" id="imagemTmp" value="#{galeriaBean.imagem}" height="300" style="margin: 0 auto;"/>
                        <h:outputText value="Descrição"/>
                        <p:inputText value="#{galeriaBean.foto.descricao}" size="49"/>
                        <h:outputText value="Ordem"/>
                        <p:inputMask mask="9" value="#{galeriaBean.foto.ordem}" size="5"/>
                    </h:panelGrid>
                </p:outputPanel>
                <p:commandButton value="Adicionar" action="#{galeriaBean.salvaFotos()}" update="dadosFoto dadosEvento"/>
            </p:dialog>
            <p:dialog id="dialogGaleria" widgetVar="dialogGaleria" modal="true" position="top"
                      minWidth="440" minHeight="500">
                <h:outputText value="Nenhuma imagem encontrada" rendered="#{galeriaBean.fotos.size()==0}"/>
                <p:galleria value="#{galeriaBean.fotos}"
                            var="galeria" effect="slide" effectSpeed="2000"
                            panelHeight="300" panelWidth="400"
                            frameHeight="50" frameWidth="50"
                            filmstripPosition="bottom" showOverlays="true">
                    <p:graphicImage value="/temp/#{galeria.id}.jpg" cache="false" width="400" height="300"
                                    title="#{galeria.descricao}" alt="#{galeria.descricao}"/>

                    <p:galleriaOverlay title="#{galeria.descricao}">
                    </p:galleriaOverlay>
                </p:galleria>
            </p:dialog>
            <p:dataTable id="tabelaEventos"
                         value="#{galeriaBean.eventos}" var="evento" style="width: 610px;"
                         emptyMessage="Nenhum evento cadastrado"
                         rows="6"
                         paginator="true"
                         paginatorPosition="bottom"
                         paginatorAlwaysVisible="false">
                <p:column headerText="Id">
                    <h:outputText value="#{evento.id}"/>
                </p:column>
                <p:column headerText="Evento">
                    <h:outputText value="#{evento.nome}"/>
                </p:column>
                <p:column headerText="Data">
                    <h:outputText value="#{evento.data}">
                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                    </h:outputText>
                </p:column>
                <p:column>
                    <p:commandButton image="ui-icon-plus" title="Adicionar Imagem" oncomplete="dialogFotos.show();" update="dadosFoto">
                        <f:setPropertyActionListener target="#{galeriaBean.eventoSelecionado}" value="#{evento}"/>
                    </p:commandButton>
                    <p:commandButton image="ui-icon-search" title="Ver Imagens" action="#{galeriaBean.listaFotosEvento()}" update="dialogGaleria" oncomplete="dialogGaleria.show()">
                        <f:setPropertyActionListener target="#{galeriaBean.eventoSelecionado}" value="#{evento}"/>
                    </p:commandButton>
                </p:column>
            </p:dataTable>
        </h:form>
    </h:body>
</html>

É uma tela simples, mas que da um grande resultado. Uma área para o cadastro dos eventos e um dataTable para listar estes eventos. Em uma coluna do dataTable colocamos dois botões, um para exibirmos as imagens(fotos) e outro para enviarmos as fotos.

O Componente Galleria tem alguns atributos que gostaria de destacar, são eles:

 value  null  String  Coleção que possui os dados das imagens
 var  null  String  Variavel  que vai interagir com a coleção
 panelHeight/panelWidth  –  Integer  Largura e altura do painel
 frameHeight/frameWidth  –  Integer  Largura e altura das miniaturas

style

null

String

 Estilo

styleClass

null

String

 Classe de estilo

effect

fade

String

 Nome da animação

filmstripPosition  top  String  Posição das miniaturas
showOverlays  true  boolean  Exibição das legendas

Abaixo eu criei um vídeo com o projeto em execução:

Ah! O vídeo foi feito com testes no primefaces 2.2.1, nesta versão a galeria era meio feinha. Abaixo vou postar como ficou com a versão 3M3 do prime.

Bom, é isso pessoal. Dúvidas? postem aqui! Abraço a todos e compartilhem suas idéias.

  1. 24/10/2011 às 14:12

    Thank You very much brother .

  2. Nandolpho
    25/10/2011 às 16:08

    Muito bom o post.Estou acompanhando a série de uploads e galeria. vlw

  3. Bob
    26/10/2011 às 06:38

    Excelente post!

  4. Thiago
    30/11/2011 às 15:40

    Ótimo post! Mas gostaria que vc me enviasse o código completo do projeto, pois estou iniciando agora e estou penando pacas para concluir o projeto.

  5. TheHasni69
    18/12/2011 às 00:54

    some files : EventoDAO.java, FotoDAO.java and ConnectionFactory.java are missing.
    Can you post this files please.

    • yenayev
      30/01/2012 às 01:45

      Hola amigo, el tutorial esta muy bueno. ¿ Podrías por favor mandarme los EventoDAO.java, FotoDAO.java y ConnectionFactory.java?
      Muchas gracias.

  6. Everson Silva
    23/12/2011 às 09:43

    Poderia Disponibilizar os DAOS , precisava ver o método fotoDAO.buscaPorEvento(eventoSelecionado);

    Grato

    • 25/12/2011 às 12:45

      me dê seu e-mail que enviarei para você.

      • Everson
        25/12/2011 às 19:29

        Obrigado, Benigno !
        Consegui aqui fazendo com JPA e hibernate, estava tendo uns paus com o seu exemplo, porém descobri que o problema esta na versão nova do primefaces RC2, carrega 3 imagens e na quarta para de funcionar, era até engraçado, coloquei a versão do prime no exemplo e funciounou tudo.
        Obrigado

      • 01/10/2012 às 22:39

        Olá Benigno Sales. antes tenho que te dar os parabéns pelo tutorial, esta me ajudando muito. Por favor me envie os arquivos FotoDAO.java, EventoDAO.java e ConectionFactory.java. Sou estudante de java e estou começando agora e este tutorial vai me ajudar muito. Obrigado meu amigo pelo material fantastico.

        Meu e-mail: moreiraprudencio@yahoo.com.br

        ou

        fred.marques@promenade.com.br

        Grato.
        Fred

  7. Mehdi
    25/12/2011 às 15:55

    some files : EventoDAO.java, FotoDAO.java and ConnectionFactory.java are missing.
    Can you post this files please.

    • 25/12/2011 às 23:22

      The DAO’s codes were omitted because you can made it ​​with ORM frameworks or not.
      If you need it tell me your e-mail then i’ll send to you.

      • Mehdi
        28/12/2011 às 09:20
      • Mehdi
        02/01/2012 às 09:08

        thank you my friend for your help but I have a problem when I click on the save button nothing happens in the table :((((

  8. 25/12/2011 às 21:34

    We need the dao codes .

    • 25/12/2011 às 23:23

      The DAO’s codes were omitted because you can made it ​​with ORM frameworks or not.
      Tell me your e-mail, then ill send to you.

  9. Javier Rodríguez Soler
    26/12/2011 às 10:08

    Olá que tal seus tutoriais são muito bons, mas eu tenho um problema com a tentativa de introduzir um dentro Firefox e Google Chrome tela fica cinzenta não ver o porquê pode ser?.
    Uma saudação e agradecer-lhe muito de Espanha e desculpe se eu não escrevo bem.

    • 26/12/2011 às 15:44

      Hola Javier, que tal? Describa el problema con más detalle.

      • Javier Rodríguez Soler
        26/12/2011 às 17:07

        Buenas tardes, cuando tengo esta estructura firefox muestra una pantalla en gris así como Google Chrome no renderiza el

        Muchas gracías de antemano.

        Un saludo.

      • john
        17/10/2012 às 17:44

        Can You send me the source code of Exemplo Galleria Primefaces (all the code project in zip file).
        Tank’s…..please helpme….my E-mail:nk-innovando@hotmail.com

  10. Javier Rodríguez Soler
    26/12/2011 às 17:09

    perdona la estructura es
    p:dialog
    p:fileUpload/
    /p:dialog

    • Everson
      26/12/2011 às 19:26

      Si puedo ayudar, el mío es trabajar, pero con JPA – Hibernate

      • 26/12/2011 às 19:50

        Estimado Everson,
        El problema no está en la capa de persistencia.

    • 26/12/2011 às 19:47

      Estimado Javier,

      ¿Qué versión de primefaces está utilizando? Si una versión 2.x o inferior se debe instalar el plugin de Flash en los navegadores informados. Así, el componente aparecerá.

      • Javier Rodríguez Soler
        27/12/2011 às 05:19

        Hola la versión que tengo es la 2.2.1 corriendo sobre netbeans 7.0.1 , y ya tengo instalado el plugin de flash voy corriendo en un windows vista y las versiones de los navegadores son:
        Firefox 9.0.1
        Google Chrome 16.0.912.63
        Internet Explorer 9

        Un saludo

      • 27/12/2011 às 08:02

        Teste o exemplo abaixo. Consegues ver o botão?
        http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf

      • Javier Rodríguez Soler
        27/12/2011 às 08:17

        Si puedo verlo el problema es cuando se encuentra dentro de un p:dialog no se puede observar.

        Gracias.

      • 27/12/2011 às 10:02

        Não sei o esta acontecendo porque tenho exemplos com a versão 2.2.1 em dialogs funcionando.

      • Javier Rodríguez Soler
        27/12/2011 às 10:12

        Tienes un correo y te envio el código fuente y si puedes le echas un vistazo.

        Un saludo.

  11. 27/12/2011 às 08:51

    Olá!
    Vim lhe agradecer imensamente por ter me passado essa solução, depois de muito tempo, mas com mais calma voltei nesse meu problema… e consegui resolver com a ajuda do seu post!
    Muitíssimo obrigada!
    😀

  12. Javier Rodríguez.
    07/01/2012 às 16:43

    Quiero agradecer la ayuda de Benigno, muchas gracías por tener una página tan interesante y por ayudarme.

    Un saludo.

  13. Wendel
    20/01/2012 às 01:31

    O seu post é ótimo. Na verdade vários dos seus posts são modelos para o meu trabalho. Gostaria de saber como ficam os DAOs, principalmente para o postgres. Se puder me ajudar lhe agradeço.

    Um abraço

  14. andre
    26/01/2012 às 22:55

    porfavor tem como vc me mandar o projeto por completo pois meu tcc tenho que trabalhar com uma galeria

  15. cyril
    31/01/2012 às 11:47

    Muy buen trabajo y muchas gracias para sacarme de las dudas.
    Por favor quería pedirle las clases EventoDAO.java, FotoDAO.java y ConnectionFactory.java.
    Mi E-Mail está con este mensaje.
    Muchas gracias.

  16. Rayckson Araujo
    07/02/2012 às 22:16

    Parabéns, Muito bom. você pode me enviasse o código completo do projeto, pois estou iniciando agora. e só com esse exemplo não conseguir a execução perfeita.. na hora de fazer o upload não faz..Desde já agradeço.

    • Everson Silva
      08/02/2012 às 08:35

      Fiz este código, mas com JPA, se alguem quiser, posso enviar. Só deixem o email.

  17. Antonio Rones Ferreira Cajazeira
    16/02/2012 às 05:20

    Ola amigo se possivel poderia me enviar as Classes Dao?
    Ficaria muito grato…

    Antonio Rones

  18. Christian da Silva Barbosa
    21/03/2012 às 14:54

    Poderia ter deixado o codigo-fonte para download.

  19. 30/03/2012 às 20:11

    Boa noite, por favor poderia me enviar esse projeto.

    Grato.

  20. 11/04/2012 às 22:04

    Olá, muito bom o seu post. Eu estou usando a Galleria para exibir imagens e está funcionando mto bem. Eu gostaria de recuperar o nome da imagem que está sendo exibida em destaque pelo componente Galleria. Tentei usar um f:param junto com o graphicImage e não deu certo. Gostaria de saber se você tem alguma solução para este problema. Agradeço a atenção e aguardo resposta.

  21. Wendel Lopes
    17/04/2012 às 02:30

    Existe a possibilidade de não utilizar um pasta temporaria para exibir imagens, ou seja, é possivel renderizar diversas imagens carregando direto do banco?

    • 17/04/2012 às 10:15

      Na época do exemplo, tentei desenvolver da forma que você falou, mas não funcionava. Não sei se houveram mudanças significativas para a classe StreamedContent e o componente GraphicImage, existia um ticket na lista de correções e melhorias do primefaces para aprimorar isso. Se tiver apressado, talvez você possa tentar postar essa mensagem no forum do primefaces e ver o que a equipe responde.

  22. Roniere
    24/04/2012 às 17:07

    E se eu quise em um diretório definitvo, ao invés de salvar no contexto

  23. 26/04/2012 às 11:09

    Cara estou precisando de uma ajuda, se puder me adicionar no msn, ou me enviar um email para: h.oliveira@msn.com com seu e-mail para trocarmos algumas idéias ficaria grato.

    Obrigado.

  24. 07/05/2012 às 22:44

    Boa noite Benigno!
    Eu twittei você mas acredito q não viu a msg, poderia me enviar por favor esse projeto para dar uma olhada?
    Meu email é alexandergtk@gmail.com.
    Agradeço desde já, abraços

  25. Ely Júnior
    25/05/2012 às 04:29

    Olá irmão gostei bastante dessa sua aplicação. Tem como mandar o código ? abraço sou seu fã

  26. Romilson P Cardoso
    25/05/2012 às 15:27

    Poderia me enviar o projetos?

    Obrigado.

  27. Ely Júnior
    25/05/2012 às 17:21

    Everson Silva :
    Fiz este código, mas com JPA, se alguem quiser, posso enviar. Só deixem o email.

    ely_b_jr@hotmail.com manda ai por favor

  28. Chinna
    04/06/2012 às 02:58

    J2EE Video Tutorial :
    Thank You very much brother .

    Can you Please Send EventoDAO.java, FotoDAO.java and ConnectionFactory.java are missing. to my mailid: a.chinasingareddy@gmail.com

  29. Caio Cesar
    08/06/2012 às 20:20

    Benigno Sales :
    me dê seu e-mail que enviarei para você.

    Man, envia o buscaPorEvento tbm… só preciso ver ele p fazer isso funcionar 😀
    seria interessante vc já colocar isso… ajudaria a muitos

    • Ely Júnior
      11/06/2012 às 12:07

      manda o e-mail

      • Vinicius
        19/06/2012 às 11:26

        tem como me enviar esse projeto…tentei fazer seguindo pelo blog, mas não deu certo…me ajudaria bastante em um trabalho que estou fazendo.
        nissinho_22@hotmail.com

      • cvjkx
        17/09/2012 às 09:44

        Chinna :

        J2EE Video Tutorial :
        Thank You very much brother .

        Can you Please Send EventoDAO.java, FotoDAO.java and ConnectionFactory.java are missing. to my mailid: a.chinasingareddy@gmail.com

        Benigno Sales :
        sorry, I havent this project anymore…

  30. Gustavo
    01/07/2012 às 13:32

    Benigno…poderia disponibilizar o projeto? eu nao estou conseguindo.

  31. André Luiz
    27/07/2012 às 21:47

    Gostei, agora teria como vc me enviar os DAO?

  32. Gustavo
    07/08/2012 às 23:33

    Gustmarket@hotmail.com envia as dão fazendo favor.vlw

  33. Tiago
    08/08/2012 às 22:01

    Olá alguem tem os fontes para mandar?

    tiagostrokes@gmail.com

    vlw

  34. 30/08/2012 às 20:42

    Muito Obrigado por compartilhar esse conhecimento. Me ajudou muito!!

  35. Francisco Jose Oliveira Araujo
    04/09/2012 às 02:00

    Ola primeiramente eu quero agradecer por compartilha seus conhecimentos e esforços, espero sinceramente um dia alcançar o mesmo nivel de conhecimanto e poder compartilhar da mesma forma que voce e outras pessoas admiraveis. Estava pesquisando na internet alguns exemplos de uploads e entao achei o seu blog,
    Gostei muito de suas postagens, porem estou tentando fazer o exemplo mas sou iniciante no java,teria como voce enviar o DAO pra que eu possa estudar.
    Muito obrigadoo

  36. 05/09/2012 às 08:58

    Olá primeiramente meus parabéns estou aprendendo com seus tutoriais do que na faculdade.Você tem como disponibilizar os Dao ou enviar para meu email.
    thaisamorandini@hotmail.com

  37. Fabricio Leonard
    06/09/2012 às 20:16

    Adorei o artigo, gostaria de implementar o exemplo, você poderia me enviar o código fonte para que eu possa implementar.

  38. Gabriel
    15/09/2012 às 17:58

    Poderia me enviar as classes DAO? O email é gabrielroquex@gmail.com

  39. 19/09/2012 às 15:52

    Parabéns Benigno, muito bom seu artigo!
    Vc pode me enviar os fontes?
    marcia.munhoz@gmail.com

  40. 01/10/2012 às 22:41

    fred :
    Olá Benigno Sales. antes tenho que te dar os parabéns pelo tutorial, esta me ajudando muito. Por favor me envie os arquivos FotoDAO.java, EventoDAO.java e ConectionFactory.java. Sou estudante de java e estou começando agora e este tutorial vai me ajudar muito. Obrigado meu amigo pelo material fantastico.
    Meu e-mail: moreiraprudencio@yahoo.com.br
    ou
    fred.marques@promenade.com.br
    Grato.
    Fred

  41. 02/10/2012 às 17:28

    Parabens pelo post Benigno,
    Tem como vc me disponibilizar os DAOs?
    obrigado
    ugleiton@gmail.com

  42. john
    17/10/2012 às 18:19

    por favor alguien me puede pasar los DAOS y el CONECTIONFACTORY
    obrigado
    nk-innovando@hotmail.com

  43. Marcos Macedo
    28/10/2012 às 22:13

    Cara muito massa mesmo, teria como voce me enviar o projeto pra eu estudar? Grato.
    Meu email é: marcosdesenvolvimento@gmail.com

  44. 08/11/2012 às 19:12

    puedes compartir el codigo fuentes de este ejemplo esta muy bonito
    https://benignosales.wordpress.com/2011/10/24/jsf-2-primefaces-pgalleria-exemplo-de-galeria-de-fotos/

    una consulta este es el link
    http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf
    el tema es como eliminar de la lista seleccionada (pantalla “Car Detail” ) bueno al seleccionar los check y presionar el boton te sale algo como esto (le añadi el boton eliminar):
    Model: ff309a3f, Year: 1973 eliminar
    Model: 6c22b674, Year: 1964 eliminar
    Model: f5b74445, Year: 2009 eliminar
    Model: 50d4328e, Year: 1970 eliminar
    Model: 1125b717, Year: 1967 eliminar
    Model: 8fb49970, Year: 1961 eliminar
    de esta tenemos que anadir el boton eliminar y al hacerle clic tendra que eliminar la toda la fila bueno espero algun comentario o alguna idea de como hacerlo

    muchas gracias espero su ayuda o sugerencia
    mikipizarro@hotmail.com

  45. wilson
    29/11/2012 às 21:12

    Parabens pelo post Benigno,
    Tem como vc me disponibilizar os DAOs?
    obrigado
    wilsontads@gmail.com

  46. 29/11/2012 às 21:25

    quiero los dao

  47. John
    07/12/2012 às 12:16

    Hi,
    could you send me also the DAO’s data?

    Greets
    John

  48. John
    08/12/2012 às 09:10

    Hi again,
    I want to know, how you change your web.xml?
    I need help for uploading and showing file!
    angeber5@yahoo.de

    Greets

  49. Francisco Carlos
    10/12/2012 às 16:04

    Olá, parabéns pelo exemplo, porém ao executar apresentou os seguintes erros:
    Grave: Error in streaming dynamic resource. null ( ao inicializar ), e Grave: Error in streaming dynamic resource. Stream Closed ( ao inserir qualquer foto ). O trecho que gera o erro é esse:

    Especificamente o <p:graphicImage …

    Mesmo apresentando esses erros, consegue rodar e apresentar os resultados.

    Se tiver alguma idéia como resolver, agradeço.

  50. 14/12/2012 às 17:30

    Its such as you read my thoughts! You seem to understand so much about this, like you wrote the
    e book in it or something. I think that you
    just can do with some p.c. to drive the message home a bit, but instead of that, that is wonderful
    blog. A fantastic read. I will certainly be back.

  51. thiago
    11/01/2013 às 13:18

    Muito bom o post, teria como me enviar os Daos ? email: thiagoplanet2004@hotmail.com

    Muito obrigado…

  52. 26/02/2013 às 13:43

    Hola me puedes enviar los daos a :d-crespin@hotmail.com

  53. viktorka
    06/03/2013 às 06:53

    Hi! Could you send me the whole project? Or the DAO-s, because I would love to make a web app like yours, I want to insert an image to a database, and then read it from the DB, and display on my browser, but I cannot do it yet! Thank you! my email: hollosi.vikor@gmail.com

  54. 15/03/2013 às 11:59

    muito bom o tuto…se puder me enviar os daos seria muito bom.
    daniel@dntech.com.br

    Desde já agradeço.

  55. franklin santos
    26/03/2013 às 16:45

    excelente post .. Olá!
    Bem, eu sou novo em java e utiizando primefaces k eu adoraria se você pudesse por favor me envie os arquivos podem:. FotoDAO.java ConnectionFactory.java EventoDAO.java e desaparecidos e, se não é pedir muito do projeto vai ver é meu endonde erros

    com antecedência e Benigno amigo muito obrigado ……

    ——————————————————————————————————————-
    hola exelente post ..!!!
    bueno soy nuevo en java y utiizando primefaces me gustaria mucho k por favor si pudiera me podria enviar los archivos:. EventoDAO.java y ConnectionFactory.java FotoDAO.java faltan y si no es mucho pedir el PROYECTO FUNCIONANDO para poder ver endonde estan mis errores

    bueno de ante mano y muchisimas gracias amigo Benigno……
    ——————————————————————————————————————-
    estos son mis correos
    moreno_fsc@hotmail.com
    ——————————–
    juan.fsc777@gmail.com
    ——————————-

  56. Ademir Junior
    21/04/2013 às 22:22

    Muito Bom Parabéns pela iniciativa! Se possível disponibilize os DAOs, para completar o estudo!

  57. Ademir Junior
    21/04/2013 às 22:23
  58. 26/04/2013 às 00:32

    Gostei muito do post. Será que você poderia me passar a dao e a classe de conexão?

  59. 03/05/2013 às 09:44

    Também gostei do post. Mas preciso dos DAOs para terminar. Meu email: jucylene_@hotmail.com

  60. Leonardo
    17/05/2013 às 22:32

    Olá Benigno, parabéns pelo conteúdo, é ótima qualidade.
    Criei uma gallery, de forma semelhante a sua, porém preciso permitir ao usuário excluir as imagens. É possível através do gallery mesmo? Tens alguma ideia?

    Abraço.

  61. Cesar
    03/06/2013 às 23:21

    Kra vou ser o numero 100 kkkkkk se puder enviar demais arquivos DAOs etc. agradeço.
    Show d bola seu site ajuda muitos de nós q estamos começando nesse mundo java.

    email: cesar@brado.com.br

  62. Cesar
    05/06/2013 às 21:42

    Por favor pessoal alguem ai dos comentarios ou o amigo Benigno se puder enviar para meu email eu ficaria muito agradecido pq to precisando fazer um exemplo igual no meu TCC.

    Abçs pessoal. email: cesar@brado.com.br

  63. 15/06/2013 às 02:09

    Saudações amigo, por favor, sua ajuda Estou construindo uma e , mas eu preciso de você para me ajudar com a classe ConnectionFactory como no tutorial que você tem você não foi, Eu espero que você me ajude
    Muito obrigado do Equador

  64. 15/06/2013 às 02:10

    Saudações amigo, por favor, sua ajuda Estou construindo uma e , mas eu preciso de você para me ajudar com a classe ConnectionFactory como no tutorial que você tem você não foi, Eu espero que você me ajude
    Muito obrigado do Equador…….

  65. guilherme
    24/06/2013 às 01:34

    ola benigno sales , teria como me passar os daos do foto e evento.
    por favor email : guipassos2013@gmail.com
    muito obrigado

  66. Marcelo VIeira
    15/07/2013 às 16:17

    Muito bom seu post, me ajudou muito. Poderia mandar os DAO para marcelo.vieiramenezes@gmail.com.

    Grato

  67. 04/09/2013 às 13:48

    por favor no se si me pueden pasar la base de datos….

  68. Patricia
    29/09/2013 às 17:14

    Olá de novo, ja resolvi o erro do index, mas agora aparece isso: Não é possível criar instância para·a classe:br.com.benignosales.galleria.managedbeans.GaleriaBean.
    o que pode ser isso?

  69. Bruno
    02/10/2013 às 20:42

    Boa noite.

    Poderia me enviar o metódo buscaPorEvento() por e-mail?
    o e-mail é brunaooo0@hotmail.com

    Obrigado.

  70. Fábio Salvador
    11/10/2013 às 11:09

    me passa o DAO e o connectionfactory por favor achei muito legal o post.

  71. Flavio Viegas
    21/01/2014 às 17:56

    Poderia me passar o codigo da galeria .. com os DAO..

  72. Marcos Tibério
    07/05/2014 às 09:49

    Bom dia.
    Segui o tutorial ao pé da risca, porem estou com esse erro, teria como de dar uma ajuda ??

    mai 07, 2014 9:46:27 AM com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
    ADVERTÊNCIA: javax.servlet.ServletException: org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn’t contain a multipart/form-data or multipart/form-data stream, content type header is application/x-www-form-urlencoded; charset=UTF-8
    javax.faces.FacesException: javax.servlet.ServletException: org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn’t contain a multipart/form-data or multipart/form-data stream, content type header is application/x-www-form-urlencoded; charset=UTF-8

  73. Carolina
    01/08/2014 às 14:47

    Olá ótimo Post você poderia madar o código completo carolx54@gmail.com

  74. marcos
    19/08/2014 às 17:46

    opa tudo bom gostaria de saber como implementar o metodo deletar imagem
    obrigado pelo post. Tentei desenvolver um botao dentro do gallerie overlay mas nao consigo apontar para a imagem

  75. Andréia Gualberto
    23/08/2014 às 09:51

    Olá, baixei o código , fiz o banco como está no tutorial, adicionei as bibliotecas , mas as imagens não vão para o a pasta /temp e nem para o banco… Alguém teve esse problema?!Sou iniciante, não entendo bem isso… Help me, please..

    obg!

  76. Marciel
    12/12/2014 às 11:00

    Olá Benigno, tudo bem? Parabéns pelo post.

    Eu fiz de uma forma um pouco diferente, onde eu efetivamente salvo as imagens no banco de dados.

    Gostaria, se possivel, que você ajudasse com a exibição direto do banco e não de uma pasta temp como você ta fazendo.

    Grande abraço.

  77. ronaldo
    29/03/2016 às 17:56

    Ótimo Tutorial, teria como estar me enviando o código fonte?
    abraço…
    ronaldoppf@hotmail.com

  78. 09/07/2016 às 07:24

    Olá Benigno, muito obrigado pela ajuda com o poste e o vídeo, já está ajudando muito.
    Se for possível desejo receber os fontes, ok?

    um forte abraço

  79. Lucas
    11/10/2016 às 15:32

    Olá amigo. Gostaria de uma ajuda.
    Queria saber como passo para renderizar ou não a imagem, as vezes importo uma imagem pequena e ele ocupada o espaço todo, assim a imagem fica desconfigurada. Queria deixar a imagem no tamanho atual.
    Muito obrigado pelo ajuda.

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: