Olá desenvolvedores, neste tutorial iremos remover os dados do telefone cadastrado, lembrando que a tabela de telefones é uma tabela filha. Desse modo a referência da tabela telefones está na tabela pai, a tabela de usuários. Removeremos os registros de telefone correspondente ao usuário selecionado, desse modo, deveremos então deletar por id.
BOTÃO DELETE
Na tabela que exibe os registros dos telefones cadastrados em tela, isto é, na página telefone.xhtml, adicione a coluna “Delete”. O botão para deletar será implementado pelo componente h:commandLink que renderiza um elemento HTML de âncora. Defina também um id. O botão deverá apontar para o método removeTelefone() do ManagedBean, telefoneManagedBean.
Uma imagem ou ícone deverá ser adicionada utilizando o recurso do h:graphicImage. Com o f:setPropertyActionListener passaremos o objeto fone para objeto telefone do ManagedBean.
Então utilizaremos o f:ajax para executar a ação do botão e renderizar o formulário e a mensagem que deverá ser exibida de acordo com o resultado da ação.
MÉTODO REMOVETELEFONE()
O método removerTelefone() deverá, após o processamento e remoção do registro voltar para a mesma tela, assim, deverá retornar uma String vazia, deverá também lançar uma exceção para cima.
No escopo do método, utilizaremos o objeto daoTelefone, da classe DAO – Data Access Object (Objeto de Acesso à Dados), para invocar o método deletarPorId(), como argumento, passaremos o objeto telefone. O DAO é a camada da aplicação (pacotes, classes e métodos) que abstrai todo o acesso ao banco de dados separadamente da lógica de negócio da aplicação.
Após a remoção do telefone, deveremos instanciar um novo registro e a tabela deverá ser recarregada exibindo todos os dados, exceto, o telefone removido. Então, uma mensagem deverá ser exibida para o usuário.
MÉTODO PESQUISAR()
Para que a tabela de exibição de dados cadastrados possa de fato ser recarregada após o processamento de alguma ação, precisaremos proceder com uma alteração no método pesquisar() da classe daoGeneric.
No método estamos utilizando o método find() do entityManager que faz a pesquisa na base de dados trabalhando com a primary key. No entanto, este método tem a característica de deixar os dados em cache, isto é, na memória temporária. E não é o que queremos.
Assim, substituiremos o find() pelo createQuery() que permite a criação de queries que serão executadas diretamente na base de dados. Desse modo iremos buscar o nome da entidade onde o id é igual ao id passado por parâmetro. No entanto, primeiro o método deverá limpar o que está em memória forçando o carregamento.
EM POUCAS PALAVRAS
Neste tutorial implementamos na tabela o botão para remover os registros de telefone selecionado e no ManagedBean o método removerTelefone(). E ainda reescrevemos o método pesquisar() do DadoGeneric possibilitando o recarregamento da tabela quando alguma ação é executada.