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!
– Phelipe Galiotti
@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"/>
– Roknauta