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 useactionListener
in 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 theactionListener
is 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 withactionListener
cannot 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 methodexcluir
eravoid
. But your argument is correct. VLW for correction.– Rogick Manoel