Refresh datatable after deleting record

0

After deleting a record in my dataTable, I want it to be reloaded, I can not. Does anyone give a help?

<?xml version="1.0" encoding="UTF-8" ?>
<!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"
    xmlns:p="http://primefaces.org/ui">
<ui:composition template="/layout/template.xhtml">
    <ui:define name="content">

        <h:form id="pesquisa" rendered="#{habilidademb.habilidade == null}">
            <p:panel header="#{msg['habilidade']}">
                <p:messages id="messages" showDetail="true" autoUpdate="true"
                    closable="true" />
                <h:panelGrid id="camposPesquisa" columns="2">
                    <h:outputLabel value="#{msg['nome']}: " />
                    <p:inputText value="#{habilidademb.arg}" />
                </h:panelGrid>
                <h:panelGrid id="botoes" columns="2" styleClass="botoesCrud">
                    <p:commandButton actionListener="#{habilidademb.pesquisar}"
                        value="#{msg['pesquisar']}" ajax="false"
                        update="cadastro,pesquisa" />
                    <p:commandButton actionListener="#{habilidademb.novo}"
                        value="#{msg['novo']}" ajax="false" update="cadastro"
                        styleClass="separadorBotoes" />
                </h:panelGrid>
                <p:dataTable id="tabela" var="linha" value="#{habilidademb.lista}"
                    paginator="true" rows="10"
                    rendered="#{not empty habilidademb.lista}" paginatorPosition="top">
                    <p:column styleClass="botoesGrid">
                        <p:commandButton icon="ui-icon-pencil"
                            action="#{habilidademb.editar(linha.id)}" process="@this"
                            update="cadastro,pesquisa" ajax="false" />
                        <p:commandButton icon="ui-icon-trash"
                            action="#{habilidademb.excluir(linha)}" ajax="true"
                            styleClass="separadorBotoes">
                            <p:confirm header="#{msg['cabecalho.apagar.registro']}"
                                message="#{msg['apagar.registro']}" icon="ui-icon-alert" />
                        </p:commandButton>
                        <p:confirmDialog global="true" showEffect="exploud"
                            hideEffect="fade">
                            <p:commandButton value="#{msg['sim']}" type="button"
                                styleClass="ui-confirmdialog-yes" icon="ui-icon-check"/>
                            <p:commandButton value="#{msg['nao']}" type="button"
                                styleClass="ui-confirmdialog-no" icon="ui-icon-close"
                                ajax="true" />
                        </p:confirmDialog>
                    </p:column>
                    <p:column headerText="#{msg['nome']}" sortBy="#{linha.nome}"
                        style="width:12%;">
                        <h:outputText value="#{linha.nome}" />
                    </p:column>
                    <p:column headerText="#{msg['descricao']}"
                        sortBy="#{linha.descricao}">
                        <h:outputText value="#{linha.descricao}" />
                    </p:column>
                    <p:column headerText="#{msg['texto.jogo']}"
                        sortBy="#{linha.textoInGame}">
                        <h:outputText value="#{linha.textoInGame}" />
                    </p:column>
                    <p:column headerText="#{msg['outo.efeito']}"
                        sortBy="#{linha.efeitoSecundario}">
                        <h:outputText value="#{linha.efeitoSecundario}" />
                    </p:column>
                    <f:facet name="footer">
                        <h:outputText
                            value="#{msg['total.registros']}: #{habilidademb.lista.size()}" />
                    </f:facet>
                </p:dataTable>
            </p:panel>
        </h:form>

        <h:form id="cadastro" rendered="#{habilidademb.habilidade != null}">
            <p:messages id="messages" showDetail="true" autoUpdate="true"
                closable="true" />
            <p:panel>
                <f:facet name="header">
                    <h:outputText
                        value="#{habilidademb.habilidade.id == null ? msg['cadastrando.habilidade'] : msg['atualizando.habilidade']}" />
                </f:facet>
                <h:panelGrid id="informacoesCadastro" columns="3">
                    <h:outputLabel value="#{msg['nome']}: " />
                    <p:inputText id="nome" value="#{habilidademb.habilidade.nome}"
                        size="20" />
                    <p:message for="nome" />
                    <h:outputLabel value="#{msg['descricao']}: " rendered="true" />
                    <p:inputTextarea id="descricao"
                        value="#{habilidademb.habilidade.descricao}" rows="6" cols="20" />
                    <p:message for="descricao" />
                    <h:outputLabel value="#{msg['texto.jogo']}: " />
                    <p:inputTextarea id="textoJogo"
                        value="#{habilidademb.habilidade.textoInGame}" rows="6" cols="20" />
                    <p:message for="textoJogo" />
                    <h:outputLabel id="efeitoS" value="#{msg['p.outro.efeito']} " />
                    <p:selectOneRadio id="hidden"
                        value="#{habilidademb.efeitoSecundario}">
                        <f:selectItem itemLabel="#{msg['sim']}" itemValue="true" />
                        <f:selectItem itemLabel="#{msg['nao']}" itemValue="false" />
                        <p:ajax event="change" update="pnlEfeito" />
                    </p:selectOneRadio>
                    <p:message for="hidden" />
                </h:panelGrid>
                <h:panelGrid id="pnlEfeito" columns="3">
                    <h:outputLabel value="#{msg['outo.efeito']}: "
                        rendered="#{habilidademb.efeitoSecundario == true or habilidademb.habilidade.efeitoSecundario != null}" />
                    <p:inputTextarea id="secundario"
                        value="#{habilidademb.habilidade.efeitoSecundario}" rows="6"
                        cols="20"
                        rendered="#{habilidademb.efeitoSecundario == true or habilidademb.habilidade.efeitoSecundario != null}" />
                    <p:message for="secundario" />
                </h:panelGrid>
                <p:commandButton action="#{habilidademb.gravar}"
                    value="#{msg['salvar']}" update="cadastro" />
                <p:commandButton action="#{habilidademb.cancelar}"
                    value="#{msg['cancelar']}" update="cadastro,pesquisa"
                    immediate="true" ajax="false" styleClass="separadorBotoes" />
                <p:commandButton actionListener="#{habilidademb.novo}"
                    value="#{msg['novo']}" ajax="false"
                    rendered="#{habilidademb.habilidade.id != null}"
                    styleClass="separadorBotoes" />
            </p:panel>
        </h:form>

And the controller:

package br.com.pokemax.controle;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;

import br.com.pokemax.modelo.Habilidade;
import br.com.pokemax.negocio.HabilidadeDAO;
import br.com.pokemax.util.Mensagens;

@ViewScoped
@ManagedBean(name = "habilidademb")
public class ControleHabilidade implements Serializable {

    private static final long serialVersionUID = 1L;

    private Habilidade habilidade;

    @Inject
    private HabilidadeDAO dao;

    private Boolean efeitoSecundario;

    private List<Habilidade> lista;

    private String arg;

    @PostConstruct
    public void inicio() {

    }

    public void novo() {
        habilidade = new Habilidade();

        /*
         * if (habilidade == null) { habilidade = new Habilidade(); } else {
         * habilidade = null; habilidade = new Habilidade(); }
         */
    }

    public void gravar() {
        try {
            if (habilidade.getId() == null) {
                dao.insert(habilidade);
                Mensagens.sucesso("Habilidade " + habilidade.getNome() + " cadastrado(a) com sucesso!");
                habilidade = new Habilidade();
            } else {
                dao.update(habilidade);
                Mensagens.sucesso("Habilidade " + habilidade.getNome() + " atualizado(a) com sucesso!");
                lista = dao.findByName(arg);
            }

        } catch (Exception e) {
            Mensagens.erro(e.getMessage());
            return;
        }

    }

    public void pesquisar() {
        try {
            if (arg.isEmpty()) {
                lista = dao.findAll();
            } else {
                lista = dao.findByName(arg);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void excluir(Habilidade h) {
        try {
            dao.delete(h);
            Mensagens.sucesso("Habilidade " + h.getNome() + " deletado(a) com sucesso!");
            pesquisar();
        } catch (Exception e) {
            Mensagens.erro(e.getMessage());
        }
    }

    public void editar(Long id) {
        try {
            setHabilidade(dao.find(id));
        } catch (Exception e) {
            Mensagens.erro(e.getMessage());
        }

    }

    public void cancelar() {
        habilidade = null;

    }

    public String navegar(String pagina) {
        return pagina;
    }

    public String getArg() {
        return arg;
    }

    public void setArg(String arg) {
        this.arg = arg;
    }

    public List<Habilidade> getLista() {
        return lista;
    }

    public void setLista(List<Habilidade> lista) {
        this.lista = lista;
    }

    public Habilidade getHabilidade() {
        return habilidade;
    }

    public void setHabilidade(Habilidade habilidade) {
        this.habilidade = habilidade;
    }

    public Boolean getEfeitoSecundario() {
        return efeitoSecundario;
    }

    public void setEfeitoSecundario(Boolean efeitoSecundario) {
        this.efeitoSecundario = efeitoSecundario;
    }

}
        </ui:define>
    </ui:composition>
    </html>
    
asked by anonymous 13.07.2016 / 03:51

2 answers

2

No p:commandButton calling the delete action you forgot to put process="@this" update="pesquisa"

    
13.07.2016 / 15:28
3

Just put p:commandButton in the update="tabela" attribute. Using process is unnecessary since the element is being passed by parameter to the method, it is best to use actionListener instead of action . This will optimize response time and network traffic.

    
13.07.2016 / 15:57