Edit datatable record

Asked

Viewed 546 times

0

Next person: On my datatable when I click the edit button, you are not opening the screen for editing. Can anyone help me where I am missing?

page:

    <h:form id="pesquisa">
        <p:panel header="Consultando Habilidades" rendered="#{habilidademb.habilidade == null}">
            <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
            <h:panelGrid id="habilidades" columns="2">
                <h:outputLabel value="Nome: " />
                <p:inputText value="#{habilidademb.arg}"/>
            </h:panelGrid>
            <h:panelGrid id="botoes" columns="2" styleClass="botoes">
            <p:commandButton actionListener="#{habilidademb.pesquisar}" value="Pesquisar" ajax="true" update="panel"/>
            <p:commandButton actionListener="#{habilidademb.novo}" value="Novo" ajax="false" update="cadastro"/>
            </h:panelGrid>

            <h:panelGroup id="panel">
            <h:form id="edit">
            <p:dataTable id="tabela" var="habilidade"
                value="#{habilidademb.lista}" paginator="true" rows="10"
                rendered="#{not empty habilidademb.lista}">
                <p:column styleClass="botoesGrid">
                <p:commandButton icon="ui-icon-pencil" action="#{habilidademb.editar(habilidade.id)}" update="pesquisa"/>
                <p:commandButton icon="ui-icon-trash" action="#{habilidademb.excluir(habilidade)}" process="@this" ajax="true"/>
                </p:column>
                <p:column headerText="Nome" sortBy="#{habilidade.nome}" style="width:12%;">
                    <h:outputText value="#{habilidade.nome}" />
                </p:column>
                <p:column headerText="Descrição" sortBy="#{habilidade.descricao}">
                    <h:outputText value="#{habilidade.descricao}" />
                </p:column>
                <p:column headerText="Efeito Secundário" sortBy="#{habilidade.efeitoSecundario}">
                    <h:outputText value="#{habilidade.efeitoSecundario}" />
                </p:column>
            </p:dataTable>
            </h:form>
            </h:panelGroup>
        </p:panel>
    </h:form>


</ui:define>

my control:

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
    HabilidadeDAO dao;

    private Boolean habilidadeHidden;

    private List<Habilidade> lista;

    private String args;

    @PostConstruct
    public void inicio(){

    }

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

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

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

    }

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

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

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

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

    }

    public void cancelar(){
        habilidade = null;
    }

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

    public String getArg() {
        return args;
    }

    public void setArg(String arg) {
        this.args = 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 getHabilidadeHidden() {
        return habilidadeHidden;
    }

    public void setHabilidadeHidden(Boolean habilidadeHidden) {
        this.habilidadeHidden = habilidadeHidden;
    }

}

and the DAO:

package br.com.pokemax.negocio;

import java.util.List;
import java.util.logging.Logger;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;

import br.com.pokemax.modelo.Habilidade;

@Stateless
@LocalBean  
public class HabilidadeDAO implements DAO<Habilidade,Long>{

    @Inject
    private EntityManager em;

    @Inject
    private Logger log;


    @Override
    public Habilidade insert(Habilidade t) throws Exception {
        log.info("Persistindo " + t);
        em.persist(t);
        return t;
    }

    @Override
    public Habilidade update(Habilidade t) throws Exception {
        log.info("Atualizando "+t);
        em.merge(t);
        return t;
    }

    @Override
    public Habilidade delete(Habilidade t) throws Exception {
        log.info("Deletando "+t);
        t = em.merge(t);
        em.remove(t);
        return t;
    }

    @Override
    public Habilidade find(Long k) throws Exception {
        log.info("Encontrando " + k);
        return em.find(Habilidade.class, k);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Habilidade> findAll() throws Exception {
        log.info("Encontrando todos as Habilidades");
        return em.createQuery("from Habilidade").getResultList();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Habilidade> findByName(String name) throws Exception {
        log.info("Encontrando a " + name);
        return em.createNamedQuery("Habilidade.findByName").setParameter("nome", "%" +name + "%").getResultList();
    }

}

Aid Please :)

  • Hello @Douglas, try to update your "edit" button 'update=":search"' and see if it works!

  • @Phelipegaliotti did not work :(. Now it looks like this: <p:commandButton icon="ui-icon-Pencil" action="#{habilidademb.edit(ability.id)}" update="vv,:search" ajax="false"/>

1 answer

1


Solved. The problem was that I didn’t set the new values for the object. I set and solved :).

setHabilidade(dao.find(id));

Browser other questions tagged

You are not signed in. Login or sign up in order to post.