Boa noite a todos!
Sou novo aqui no fórum e iniciante em java web, então me desculpem se estou fazendo uma pergunta boba.
Lá vai…
Criei uma aplicação em jsf com hibernate, fiz então uma classe DAO e um ManagedBean:
Indo direto ao ponto fiz métodos estilo “CRUD”. O problema é no método atualizar!
Quando clico no botão na página ele não atuliza os dados, e não sei o que fiz de errado.
Se alguém puder me ajudar já agradeço.
Eis o código.
[codepackage managed;
import entity.Pessoa;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import persistence.PessoaDao;
@ManagedBean
@RequestScoped
public class PessoaBean {
//ATRIBUTOS PARA ARMAZENAR O VALOR DOS CAMPOS
private String nome;
private String email;
//ATRIBUTO PARA EXIBIR A CONSULTA NA TABELA
private List<Pessoa> dados = new ArrayList<Pessoa>();
public PessoaBean() {
}
//MÉTODOS QUE REFLETEM A PESSOADAO
public void cadastrar(){
try {
//CRIA UM NOVO OBJETO Pessoa
Pessoa p = new Pessoa();
//ATRIBUI AOS CAMPOS O VALOR SETADO POR set.
p.setNome(nome);
p.setEmail(email);
//CRIA UM NOVO OBJETO PessoaDao CHAMA O MÉTODO SALVAR PASSANDO
//Pessoa PARA O MÉTODO(p).
new PessoaDao().salvar(p);
//PEGA A INSTÂNCIA ABERTA E PASSA MENSAGEM DE RETORNO PARA O
//FORM PELO id.
FacesContext.getCurrentInstance().addMessage("frmcadastro",
new FacesMessage("Cadastrado com sucesso!"));
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage("frmcadastro",
new FacesMessage(e.getMessage()));
}
}
public void excluir(ActionEvent event){
//RESGATE DO PARÂMETRO PESSOA
UIParameter p =(UIParameter) event.getComponent().findComponent("excluirP");
try {
Pessoa item = (Pessoa) p.getValue();
new PessoaDao().excluir(item);
} catch (Exception e) {
e.printStackTrace();
}
}
public void atualizar(ActionEvent event){
UIParameter p = (UIParameter) event.getComponent().findComponent("atualizarP");
try {
Pessoa item = (Pessoa) p.getValue();
new PessoaDao().atualizar(item);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<Pessoa> getDados() {
try {
dados = new PessoaDao().consultar();
} catch (Exception e) {
e.printStackTrace();
}
return dados;
}
public void setDados(List<Pessoa> dados) {
this.dados = dados;
}
}
[
package persistence;
import entity.Pessoa;
import org.hibernate.<em>;
import java.util.</em>;
public class PessoaDao {
Session s;
Transaction t;
Query q;
//-----------CRUD---------------
public void salvar(Pessoa p) throws Exception{
//ABRE UMA CONEXÃO
s = HibernateUtil.getSessionFactory().openSession();
//COMEÇA A OPERAÇÃO
t = s.beginTransaction();
//SALVA PESSOA (CLASSE DE ENTIDADE)
s.save§;
//CONFIRMA A OPERAÇÃO
t.commit();
}
public void excluir(Pessoa p) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
t = s.beginTransaction();
s.delete(p);
t.commit();
}
public void atualizar(Pessoa p) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
t = s.beginTransaction();
s.update(p);
t.commit();
}
public List<Pessoa> consultar() throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
q = s.createQuery("from Pessoa order by id asc");
return q.list();
}
}]
AQUI É A JSF
ontentType=“text/html” pageEncoding=“UTF-8”%>
<%@taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
<%–
This file is an entry point for JavaServer Faces application.
–%>
<f:view>
Index
<h:outputText value=“JavaWeb - Teste de JSF: Luiz Paulo Aureliano”/>
<h:form id=“frmcadastro”>
<h:outputText value=“Formulário de Cadastro”/>
<h:panelGrid columns=“2”>
<h:outputLabel value=“Nome:” for=“nome”/>
<h:inputText id=“nome” required=“true”
requiredMessage=“Por favor informe seu nome”
value="#{PessoaBean.nome}"/>
<h:outputLabel value=“Email:” for=“email”/>
<h:inputText id=“email” required=“true”
requiredMessage=“Por favor informe seu email”
value="#{PessoaBean.email}"/>
</h:panelGrid>
<h:commandButton value=“Cadastrar” action="#{PessoaBean.cadastrar}"/>
<h:messages/>
</h:form>
<h:form id="frmdados">
<h:dataTable border="1" value="#{PessoaBean.dados}" var="p">
<h:column>
<f:facet name="header">
<h:outputText value="Código"/>
</f:facet>
<h:inputText value="#{p.idpessoa}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:inputText value="#{p.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email"/>
</f:facet>
<h:inputText value="#{p.email}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Ações"/>
</f:facet>
<h:commandButton value="Excluir" actionListener="#{PessoaBean.excluir}">
<f:param name="excluirP" id="excluirP" value="#{p}"/>
</h:commandButton>
<h:commandButton value="Atualizar" actionListener="#{PessoaBean.atualizar}">
<f:param name="atualizarP" id="atualizarP" value="#{p}"/>
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>
</body>
</html>
</f:view>
]