Como remover um objeto que foi setado numa <h:dataTable>?

0 respostas
faeldix

segue minha tela:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

	<ui:composition template="/template.xhtml">
		<ui:define name="principal">
		
		<h:messages />
		
		<h:form>
			<h:panelGrid columns="2">
				<f:facet name="header">
					<h:outputText value="FORMULARIO DE CADASTRO" />
				</f:facet>
				<h:outputLabel value="Nome: " />
				<h:inputText value="#{contato.contato.nome}" />
				<h:outputLabel value="Data de Nascimento: " />
				<h:inputText value="#{contato.contato.dataNascimento}">
					<f:convertDateTime pattern="dd/MM/yyyy"/>
				</h:inputText>
				<h:outputLabel value="Email: " />
				<h:inputText value="#{contato.contato.email}" />
				<h:outputLabel value="Endereco: " />
				<h:inputText value="#{contato.contato.endereco}" />
				<h:commandButton value="Cadastrar" actionListener="#{contato.salvarContato}" action="lista"/>
			</h:panelGrid>
		</h:form>
		
		<h1>Ultimos Cadastrados</h1>
		
		<h:dataTable value="#{contato.ultimosCadastados}" 
			var="item" rendered="#{not empty contato.ultimosCadastados}">
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="ID" />
			</f:facet>
			<h:outputText value="#{item.id}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="Nome" />
			</f:facet>
			<h:outputText value="#{item.nome}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="Email" />
			</f:facet>
			<h:outputText value="#{item.email}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="Endereco" />
			</f:facet>
			<h:outputText value="#{item.endereco}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="Data de Nascimento" />
			</f:facet>
			<h:outputText value="#{item.dataNascimento}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputLabel value="Opções" />
			</f:facet>
			<h:panelGroup>
			<h:form>
				<h:commandLink action="editar">
					<h:graphicImage value="/img/icones/delete.png" width="15px" height="15px"/>
				</h:commandLink>
				<h:commandLink actionListener="#{contato.removerContato}">
					<h:graphicImage value="/img/icones/update.png" width="15px" height="15px"/>
				</h:commandLink>
			</h:form> 
			</h:panelGroup>
		</h:column>
		</h:dataTable>
		
		</ui:define>
	</ui:composition>
</html>

meu bean

package br.com.ceuma.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;

import br.com.ceuma.dao.DAO;
import br.com.ceuma.model.Contato;
import br.com.ceuma.dao.ContatoDAO;

public class ContatoBean {
	
	private DAO<Contato> banco;
	private Contato contato;
	private List<Contato> ultimosCadastados;
	
	public ContatoBean() {
		
		DAO<Contato> dao = new ContatoDAO();
		this.banco = dao;
	
		this.contato = new Contato();
		this.ultimosCadastados = new ArrayList<Contato>();
	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}

	public List<Contato> getUltimosCadastados() {
		return ultimosCadastados;
	}

	private void addToArrayCadastrados(Contato e){
		this.ultimosCadastados.add(e);
	}
	
	private void removeToArrayCadastrados(Contato e){
		this.ultimosCadastados.remove(e);
	}

	public void salvarContato(ActionEvent ev){
		
		try {
			this.banco.save(getContato());
			this.banco.finalizar();
			
			this.addToArrayCadastrados(getContato());
		} catch (Exception e) {
			this.banco.finalizar(e);
		} finally {
			this.banco = new ContatoDAO();
			this.contato = new Contato();
		}
	}
	
	public void removerContato(ActionEvent ev){
		
		System.out.println(this.getContato().getNome());
		
		try {
			this.banco.remove(getContato());
			this.banco.finalizar();
			
			this.removeToArrayCadastrados(getContato());
		} catch (Exception e) {
			this.banco.finalizar(e);
		} finally {
			this.banco = new ContatoDAO();
			this.contato = new Contato();
		}
	}
	
}

minha classe contato

package br.com.ceuma.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="tb_contato")
public class Contato {
	
	@Id @GeneratedValue
	private Long id;
	private String nome;
	@Column(unique=true)
	private String email;
	private String endereco;
	@Column(name="data_nascimento")
	private Date dataNascimento;
	
	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 String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public Date getDataNascimento() {
		return dataNascimento;
	}
	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	
}

pessoal.. a parte de persistencia esta OK.. mas o metodo nem é chamado quando eu clico na imagem que chama o metodo =(

Criado 3 de julho de 2012
Respostas 0
Participantes 1