PROBLEMA com rowSelectListener e update da p:dateTable - RESOLVIDO

2 respostas
E

Pessoal estou com um PROBLEMA com rowSelectListener e update da p:dateTable, no código abaixo ele chama o metodo do rowSelectListener, porem o update só funciona no moxila no IE não funciona alguem sabe o porque?

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Cadastro de Album</title>
    </h:head>
    <f:view >
        <h:body>

            <h:form id="frmGridAlbum">
                <p:growl id="menssagensAlbum"
                         life="3000"/>
                <p:dataTable id="dtAlbuns"
                             widgetVar="dtAlbuns"
                             var="album"
                             value="#{albumMB.albuns}"
                             paginator="true"
                             rows="5"
                             selection="#{albumMB.album}"
                             rowSelectListener="#{albumMB.selecionarAlbum}" // ESTE CARA
                             selectionMode="single"
                             onRowSelectComplete="dlgAlbum.show();"
                             emptyMessage="Nao existe Album cadastrado"
                             style="width:60%"
                             update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dtFotos, frmCadastroAlbum:clkGravar, frmCadastroAlbum:clkAlterar">
                    <p:column sortBy="#{album.id}"
                              filterBy="#{album.id}">
                        <f:facet name="header">
                            <h:outputText value="Id" />
                        </f:facet>
                        <h:outputText value="#{album.id}" />
                    </p:column>
                    <p:column sortBy="#{album.cliente.nome}"
                              filterBy="#{album.cliente.nome}">
                        <f:facet name="header">
                            <h:outputText value="Cliente" />
                        </f:facet>
                        <h:outputText value="#{album.cliente.nome}" />
                    </p:column>
                </p:dataTable>
                <p:panel style="width:59.2%">
                    <p:commandLink id="clkIncluir"
                                   title="Incluir"
                                   oncomplete="dlgAlbum.show()"
                                   action="#{albumMB.incluir}"
                                   update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dtFotos, frmCadastroAlbum:clkGravar, frmCadastroAlbum:clkAlterar">
                        <h:graphicImage url="/imagens/novo.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <p:commandLink title="Apagar"
                                   actionListener="#{albumMB.apagar}"
                                   style="margin-left:20px"
                                   update="frmGridAlbum"
                                   oncomplete="dlgAlbum.hide();">
                        <h:graphicImage url="/imagens/apagar.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <h:commandLink title="Voltar"
                                   action="#{albumMB.voltar}"
                                   style="margin-left:20px">
                        <h:graphicImage url="/imagens/voltar.jpg"
                                        style="border:0"/>

                    </h:commandLink>
                </p:panel>
            </h:form>
            <h:form id="frmCadastroAlbum">
                <p:dialog id="dlgAlbum"
                          widgetVar="dlgAlbum"
                          header="Album"
                          width="1050"
                          height="550"
                          resizable="true">
                    <h:panelGrid columns="2">
                        <h:outputLabel value="Cliente:"
                                       for="somCliente" />
                        <h:selectOneMenu id="somCliente"
                                         value="#{albumMB.album.cliente.id}"
                                         required="true"
                                         requiredMessage="Informe a descricao"
                                         style="width:284%">
                            <f:selectItems value="#{albumMB.clientes}"
                                           var="cliente"
                                           itemValue="#{cliente.id}"
                                           itemLabel="Cliente: #{cliente.nome} - CPF: #{cliente.cpf}"/>
                        </h:selectOneMenu>
                        <h:outputLabel value="Descricao:"
                                       for="itaDescricao"/>
                        <h:inputTextarea id="itaDescricao"
                                         value="#{albumMB.album.descricao}"
                                         required="true"
                                         requiredMessage="Informe a descricao"
                                         style="width:282%"/>
                    </h:panelGrid>
                    <p:dataTable id="dtFotos"
                                 var="foto"
                                 widgetVar="dtFotos"
                                 value="#{albumMB.fotos}"
                                 scrollable="true"
                                 height="200"
                                 emptyMessage="Nenhuma Foto"
                                 selection="#{albumMB.foto}"
                                 selectionMode="single"
                                 rowSelectListener="#{albumMB.prepararFoto}">
                        <p:column sortBy="#{foto.nome}"
                                  filterBy="#{foto.nome}"
                                  style="width:10%">
                            <f:facet name="header">
                                <h:outputText value="Nome da Foto" />
                            </f:facet>
                            <h:outputText value="#{foto.nome}" />
                        </p:column>
                        <p:column sortBy="#{foto.publicado}"
                                  filterBy="#{foto.publicado}"
                                  style="width:5%">
                            <f:facet name="header">
                                <h:outputText value="Publicada" />
                            </f:facet>
                            <h:selectOneMenu id="somPublicada"
                                             value="#{foto.publicado}">
                                <f:selectItems value="#{albumMB.publicados}"/>
                            </h:selectOneMenu>

                        </p:column>
                        <p:column sortBy="#{foto.dataPublicada}"
                                  filterBy="#{foto.dataPublicada}"
                                  style="width:5%">
                            <f:facet name="header">
                                <h:outputText value="Data da publicação" />
                            </f:facet>
                            <p:calendar id="cldDataFoto"
                                        value="#{foto.dataPublicada}"
                                        readOnlyInputText="true"/>
                        </p:column>

                        <p:column style="width:3%">
                            <f:facet name="header">
                                <h:outputText value="Apagar" />
                            </f:facet>

                            <p:commandLink  id="clkApagarFoto"
                                            title="Apagar Foto"
                                            value="Apagar"
                                            ajax="true"
                                            actionListener="#{albumMB.apagarFoto}"
                                          >
                            
                               
                            </p:commandLink>
                        </p:column>
                                          </p:dataTable>
                    <h:panelGrid columns="2">
                        <p:commandLink  id="clkGravar"
                                        title="Gravar"
                                        action="#{albumMB.gravar}"
                                        disabled="#{!empty albumMB.album.id}"
                                        style="margin-right:20px"
                                        update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dtFotos, frmGridAlbum:menssagensAlbum, frmGridAlbum:dtAlbuns">
                            <h:graphicImage url="/imagens/gravar.jpg"
                                            style="border:0"/>
                        </p:commandLink>
                        <p:commandLink id="clkAlterar"
                                       title="Alterar"
                                       action="#{albumMB.alterar}"
                                       disabled="#{empty albumMB.album.id}"
                                       update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dtFotos, frmGridAlbum:menssagensAlbum, frmGridAlbum:dtAlbuns"
                                       style="margin-left:20px"
                                       oncomplete="dlgAlbum.hide();">
                            <h:graphicImage url="/imagens/alterar.bmp"
                                            style="border:0"/>
                        </p:commandLink>
                    </h:panelGrid>
                </p:dialog>
            </h:form>
            <h:form>
             <p:fileUpload id="fudSelecionarFotos"
                                  fileUploadListener="#{albumMB.selecionarFotos}"
                                  multiple="false"
                                  allowTypes="*.jpg;*.png;*.gif;"
                                  description="Images"
                                  update="dtFotos"
                                  auto="true"
                                  label="Selecionar Foto"/>

                   
            </h:form>
        </h:body>
    </f:view>
</html>

MB

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package apresentacao;

import Utilitarios.EntradaSaidaUtil;
import Utilitarios.JSFUtil;
import entidades.Album;
import entidades.Foto;
import entidades.Pessoa;
import entidades.Publicado;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import negocios.AlbumBO;
import negocios.PessoaBO;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.event.SelectEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author emacedo
 */
@ManagedBean(name = "albumMB")
@ViewScoped
public class AlbumMB implements Serializable {

    private AlbumBO albumBO;
    private Album album;
    private List<Album> albuns;
    private Foto foto;
    private List<Foto> fotos;
    private List<Publicado> publicados;
    private List<Pessoa> clientes;
    private PessoaBO clienteBO;

    //Construtor
    public AlbumMB() {
        this.setClienteBO(new PessoaBO());
        this.setAlbumBO(new AlbumBO());
        this.setAlbum(new Album());
        this.setFoto(new Foto());
        this.setFotos(new ArrayList<Foto>());
        this.setPublicados(new ArrayList<Publicado>());
        this.getPublicados().add(Publicado.NAO);
        this.getPublicados().add(Publicado.SIM);
        this.listarClientes();
        this.listar();

    }

    // Get e Set
    public Foto getFoto() {
        return foto;
    }

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

    public List<Publicado> getPublicados() {
        return publicados;
    }

    public void setPublicados(List<Publicado> publicados) {
        this.publicados = publicados;
    }

    public Album getAlbum() {
        return album;
    }

    public void setAlbum(Album album) {
        this.album = album;
    }

    public AlbumBO getAlbumBO() {
        return albumBO;
    }

    public void setAlbumBO(AlbumBO albumBO) {
        this.albumBO = albumBO;
    }

    public List<Album> getAlbuns() {
        return albuns;
    }

    public void setAlbuns(List<Album> albuns) {
        this.albuns = albuns;
    }

    public List<Pessoa> getClientes() {
        return clientes;
    }

    public void setClientes(List<Pessoa> clientes) {
        this.clientes = clientes;
    }

    public PessoaBO getClienteBO() {
        return clienteBO;
    }

    public void setClienteBO(PessoaBO clienteBO) {
        this.clienteBO = clienteBO;
    }

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

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

    //Metodos
    public void incluir() {
        this.setAlbum(new Album());
        this.setFotos(new ArrayList<Foto>());
    }

    public String voltar() {
        return "menu";
    }

    public void gravar() {
        try {
            if (this.getFotos().isEmpty()) {
                JSFUtil.enviarMenssagemSucesso("Inclua Foto(s) no Album");
            } else {
                Pessoa cliente = this.getClienteBO().buscarPessoaPorId(this.getAlbum().getCliente().getId());
                this.getAlbum().setCliente(cliente);
                this.getAlbum().setFotos(this.getFotos());
                this.getAlbumBO().gravar(this.getAlbum());
                this.getAlbuns().add(this.getAlbum());
                this.setFotos(new ArrayList<Foto>());
                this.setAlbum(new Album());
                JSFUtil.enviarMenssagemSucesso("Album gravado com sucesso");
            }
        } catch (Exception e) {
            e.printStackTrace();
            JSFUtil.enviarMenssagemErro("Erro ao gravar" + " " + e.getMessage());
        }
    }

    public void alterar() {
        try {
            if (this.getFotos().isEmpty()) {
                JSFUtil.enviarMenssagemSucesso("Inclua Foto(s) no Album");
            } else {
                Integer indice = this.getAlbuns().indexOf(this.getAlbum());
                this.getAlbum().setFotos(this.getFotos());
                this.getAlbumBO().alterar(this.getAlbum());
                this.getAlbuns().remove(this.getAlbum());
                this.getAlbuns().add(indice, this.getAlbum());
                JSFUtil.enviarMenssagemSucesso("Album alterado com sucesso");
            }
        } catch (Exception e) {
            JSFUtil.enviarMenssagemErro("Erro ao alterar" + " " + e.getMessage());
        }

    }

    public void apagar() {
        if (this.getAlbum() == null) {
            JSFUtil.enviarMenssagemAtencao("Selecione um Album na grid");
        } else {
            try {
                this.getAlbumBO().apagar(this.getAlbum());
                this.setFotos(new ArrayList());
                this.getAlbuns().remove(this.getAlbum());
                JSFUtil.enviarMenssagemSucesso("Album apagado com sucesso");
            } catch (Exception e) {
                JSFUtil.enviarMenssagemErro("Erro ao apagar" + " "
                        + e.getMessage());
            }
        }

    }

    private void listar() {
        try {
            this.setAlbuns(this.getAlbumBO().listar());
        } catch (Exception e) {
            e.printStackTrace();
            JSFUtil.enviarMenssagemErro("Erro ao listar");
        }
    }

    private void listarClientes() {
        try {
            this.setClientes(this.getClienteBO().listarClientes());
        } catch (Exception e) {
            e.printStackTrace();
            JSFUtil.enviarMenssagemErro("Erro ao listar Clientes");
        }

    }

    public void selecionarAlbum(SelectEvent evento) {
        System.out.println("tf");
        this.prepararAlteracao();
    }

    private void prepararAlteracao() {
        this.setFotos(this.getAlbum().getFotos());
    }

    public void prepararFoto(SelectEvent evento) {
    }

    public void prepararData(ValueChangeEvent evento) {
        System.out.print("dddd");
        if (this.getFoto().getPublicado().equals(Publicado.SIM)) {
            Date dataAtual = new Date();
            this.getFoto().setDataPublicada(dataAtual);
        } else {
            this.getFoto().setDataPublicada(null);
        }
    }

    public void apagarFoto() {
        if (this.getFoto() == null) {
            JSFUtil.enviarMenssagemAtencao("Selecione uma Foto na grid");
        } else {
            try {
                this.getFotos().remove(this.getFoto());
                JSFUtil.enviarMenssagemSucesso("Foto apagada com sucesso");
            } catch (Exception e) {
                JSFUtil.enviarMenssagemErro("Erro ao apagar" + " "
                        + e.getMessage());
            }
        }

    }

    public void selecionarFoto(ActionEvent e) {
        if (this.getFoto() == null) {
            JSFUtil.enviarMenssagemAtencao("Selecione uma Foto na grid");
        } else {
            String diretorioFoto = "C:" + File.separator + "Desenvolvimento" + File.separator + "Projetos" + File.separator + "Studio" + File.separator + "Projeto" + File.separator + "web" + File.separator + "fotos";
            String nomeFoto = diretorioFoto + File.separator + this.getFoto().getNome();
            try {
                EntradaSaidaUtil.limparDiretorio(diretorioFoto);
                InputStream is = new ByteArrayInputStream(this.foto.getFoto());
                EntradaSaidaUtil.gravarArquivo(nomeFoto, is);
                System.out.println("img foto" + this.getFoto().getNome());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

    }

    //Metodos em geral
    public void selecionarFotos(FileUploadEvent event) throws IOException {
        UploadedFile uf = event.getFile();
        String nomeArquivo = uf.getFileName();
        InputStream is = null;
        Foto foto = new Foto();
        try {
            is = uf.getInputstream();
            //Populo o objeto Foto

            foto.setNome(nomeArquivo);
            foto.setFoto(uf.getContents());
            //  foto.setImagem(uf.getInputstream());
            // foto.setImagemStream(new DefaultStreamedContent(uf.getInputstream()));

            fotos.add(foto);
            JSFUtil.enviarMenssagemSucesso("Upload realizado com sucesso.");
        } catch (Exception e) {
            e.printStackTrace();
            JSFUtil.enviarMenssagemErro("Erro ao realizar o Upload.");
        } finally {
            try {
                is.close();
            } catch (IOException ex) {
                ex.printStackTrace();
                JSFUtil.enviarMenssagemErro("Erro ao realizar o Upload.");
            }
        }
    }
}

2 Respostas

E

?

E

mudei para versão 3.0 do prime e funciono

Criado 15 de abril de 2011
Ultima resposta 16 de abr. de 2011
Respostas 2
Participantes 1