meu crud está quase completo. Estou com o seguinte problema: No meu
datatable coloquei 2 botões, um pra editar e outro pra excluir. Porém
quando clico no edit, ele abre a página de cadastro porém não carrega os
dados para edição. Alguém pode ajudar?
Minha página da pesquisa:
<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 style="width:10%;">
<p:commandButton icon="ui-icon-pencil" actionListener="#{habilidademb.editar(habilidade.id)}" process="@this" action="#{habilidademb.navegar('/crud/cadastro/habilidade.jsf')}" ajax="true" update="@form"/>
<p:commandButton icon="ui-icon-trash" action="#{habilidademb.excluir(habilidade)}" process="@this" ajax="true" update="@form"/>
</p:column>
<p:column headerText="Nome" sortBy="#{habilidade.nome}">
<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ágina de cadastro:
<?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: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>
<p:panel header="Cadastrando Habilidades">
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/>
<h:panelGrid id="cadastro" columns="3">
<h:outputLabel value="Nome: " />
<p:inputText id="nome" value="#{habilidademb.habilidade.nome}" size="20" />
<p:message for="nome" />
<h:outputLabel value="Descrição: " rendered="true" />
<p:inputTextarea id="descricao"
value="#{habilidademb.habilidade.descricao}" rows="6" cols="20" />
<p:message for="descricao" />
<h:outputLabel id="efeitoS" value="Possui efeito secundário? : " />
<p:selectBooleanButton id="efeito"
value="#{habilidademb.habilidadeHidden}" onLabel="Sim"
offLabel="Não" style="width:60px">
<p:ajax event="change" update="pnlEfeito" />
</p:selectBooleanButton>
<p:message for="efeito" />
</h:panelGrid>
<h:panelGrid id="pnlEfeito" columns="3">
<h:outputLabel value="Efeito Secundário: " rendered="#{habilidademb.habilidadeHidden == true}" />
<p:inputTextarea id="secundario" value="#{habilidademb.habilidade.efeitoSecundario}" rows="6" cols="20" rendered="#{habilidademb.habilidadeHidden == true}" />
<p:message for="secundario" />
</h:panelGrid>
<p:commandButton action="#{habilidademb.gravar}" value="Salvar" update="cadastro"/>
<p:commandButton actionListener="#{habilidademb.cancelar}" value="Voltar" action="#{habilidademb.navegar('/crud/habilidade.jsf')}" process="@this"/>
</p:panel>
Controle;
public void editar(Long id) {
try {
dao.find(id);
} catch (Exception e) {
Mensagens.erro(e.getMessage());
}
}
DAO:
@Override
public Habilidade find(Long k) throws Exception {
log.info("Encontrando " + k);
return em.find(Habilidade.class, k);
}