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.");
}
}
}
}