0
after deleting a record in my datatable, I want it to be reloaded, I’m not getting it. Someone gives 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>
Thanks, with the actionListner it didn’t function.
– Roknauta
I agree on the
process, but useactionListenerin this case is wrong. See that he wants to run a business logic inside the Managed bean, which is the exclusion of a skilldao.delete(h);. When we wish to execute a business logic or browse between pages we should useaction. Whereas theactionListeneris more related to run a view related logic, such as an action to clear the form or else trigger an action before a business logic. Remembering that withactionListenercannot use navigation.– Sandro Queiroz Jr
True Sandro, I was wrong about the
actionLister. I gave this option because in this case there was no need for navigation and the methodexcluireravoid. But your argument is correct. VLW for correction.– Rogick Manoel