Olá pessoal, estou a uns dias tentando entender pq minha aplicação não está persistindo. Quando estarto o server e abro a plicação pelo navegador, funciona, insiro os dados mas quando clico no botão salvar não acontece nada, não salva e nem emite mensagem nenhuma. já não sei mais o que faço, me ajudem por favor.
vou colocar os códigos pra olharem e se puderem me ajudem por favor.
Classe modelo Usuario:package br.com.model;
import java.io.Serializable;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "usuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "id", nullable = false, unique = true)
private Integer id;
@Column(name = "nome", length = 50, nullable = false)
private String nome;
@Column(name = "login", length = 20, nullable = false, unique = true)
private String login;
@Column(name = "senha", length = 10, nullable = false)
private String senha;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "datainatividade")
private Calendar dataInatividade;
public Usuario() {
}
@ElementCollection(targetClass = String.class)
@JoinTable(name = "usuariopermissao", uniqueConstraints = { @UniqueConstraint(columnNames = {
"usuario", "permissao" }) }, joinColumns = @JoinColumn(name = "usuario"))
@Column(name = "permissao", length = 50)
private Set<String> permissao = new HashSet<String>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Calendar getDataInatividade() {
return dataInatividade;
}
public void setDataInatividade(Calendar dataInatividade) {
this.dataInatividade = dataInatividade;
}
public Set<String> getPermissao() {
return permissao;
}
public void setPermissao(Set<String> permissao) {
this.permissao = permissao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((dataInatividade == null) ? 0 : dataInatividade.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((login == null) ? 0 : login.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result
+ ((permissao == null) ? 0 : permissao.hashCode());
result = prime * result + ((senha == null) ? 0 : senha.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (dataInatividade == null) {
if (other.dataInatividade != null)
return false;
} else if (!dataInatividade.equals(other.dataInatividade))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (login == null) {
if (other.login != null)
return false;
} else if (!login.equals(other.login))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
if (permissao == null) {
if (other.permissao != null)
return false;
} else if (!permissao.equals(other.permissao))
return false;
if (senha == null) {
if (other.senha != null)
return false;
} else if (!senha.equals(other.senha))
return false;
return true;
}
}
Interface IDaoUsuario:
package br.com.dao;
import java.io.Serializable;
import java.util.List;
import br.com.ueg.tc.model.Usuario;
public interface IDaoUsuario {
void save(Usuario usuario);
void update(Usuario usuario);
void remove(Usuario usuario);
Usuario getById(Serializable id);
Usuario getByLogin(String login);
List<Usuario> listar();
}
DaoUsuario:
package br.com.dao;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import org.hibernate.Query;
import org.hibernate.Session;
import br.com.ueg.tc.model.Usuario;
@ManagedBean
@ApplicationScoped
public class DaoUsuario implements IDaoUsuario, Serializable {
private static final long serialVersionUID = 1L;
private Session session;
public void setSession(Session session) {
this.session = session;
}
@Override
public void save(Usuario usuario) {
this.session.save(usuario);
}
@Override
public void update(Usuario usuario) {
if (usuario.getPermissao() == null
|| usuario.getPermissao().size() == 0) {
Usuario usuarioPermissao = this.getById(usuario.getId());
usuario.setPermissao(usuarioPermissao.getPermissao());
this.session.evict(usuarioPermissao);
}
this.session.update(usuario);
}
@Override
public void remove(Usuario usuario) {
this.session.delete(usuario);
}
@Override
public Usuario getById(Serializable id) {
return (Usuario) this.session.get(Usuario.class, id);
}
@Override
public Usuario getByLogin(String login) {
String hql = "select u from Usuario u where u.login = :login";
Query consulta = this.session.createQuery(hql);
consulta.setString("login", login);
return (Usuario) consulta.uniqueResult();
}
@SuppressWarnings("unchecked")
@Override
public List<Usuario> listar() {
return this.session.createCriteria(Usuario.class).list();
}
}
Classe das regras de negócio BUsuario:
package br.com.ueg.tc.business;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import br.com.ueg.tc.model.Usuario;
import br.com.ueg.tc.util.BException;
import br.com.ueg.tc.dao.DaoUsuario;
@ManagedBean
@ApplicationScoped
public class BUsuario implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{daoUsuario}")
private DaoUsuario daoUsuario;
public DaoUsuario getDaoUsuario() {
return daoUsuario;
}
public void setDaoUsuario(DaoUsuario daoUsuario) {
this.daoUsuario = daoUsuario;
}
public void save(Usuario usuario) {
Integer id = usuario.getId();
if (id == null || id == 0) {
usuario.getPermissao().add("ROLE_USUARIO");
this.daoUsuario.save(usuario);
} else {
this.daoUsuario.update(usuario);
}
}
public void update(Usuario usuario) {
this.daoUsuario.update(usuario);
}
public void remove(Usuario usuario) throws BException {
if (usuario.getPermissao().equals("ROLE_ADMINISTRADOR")) {
throw new BException(
"Usuários administradores não podem ser excluídos.");
} else {
this.daoUsuario.remove(usuario);
}
}
public Usuario getById(Serializable id) {
return this.daoUsuario.getById(id);
}
public Usuario getByLogin(String login) {
return this.daoUsuario.getByLogin(login);
}
public List<Usuario> listar() {
return this.daoUsuario.listar();
}
}
Controlador(service) UsuarioBean:
package br.com.ueg.tc.control;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import br.com.ueg.tc.business.BUsuario;
import br.com.ueg.tc.model.Usuario;
import br.com.ueg.tc.util.BException;
@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
private Usuario usuario = new Usuario();
private String confirmarSenha;
private List<Usuario> lista;
@ManagedProperty(value = "#{bUsuario}")
private BUsuario bUsuario;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String getConfirmarSenha() {
return confirmarSenha;
}
public void setConfirmaSenha(String confirmarSenha) {
this.confirmarSenha = confirmarSenha;
}
public BUsuario getbUsuario() {
return bUsuario;
}
public void setbUsuario(BUsuario bUsuario) {
this.bUsuario = bUsuario;
}
// create
public String novo() {
this.usuario = new Usuario();
// this.usuario.setDataInatividade(null);
return "/admin/usuario";
}
public String salvar() {
FacesContext context = FacesContext.getCurrentInstance();
String senha = this.usuario.getSenha();
if (!senha.equals(this.confirmarSenha)) {
FacesMessage facesMessage = new FacesMessage(
"A senha não foi confirmada corretamente.");
context.addMessage(null, facesMessage);
return null;
}
bUsuario.save(this.usuario);
return "/public/usuarioSucesso";
}
// Read
public List<Usuario> getLista() {
if (this.lista == null) {
this.lista = bUsuario.listar();
}
return this.lista;
}
// Update
public String editar() {
this.confirmarSenha = this.usuario.getSenha();
return "/admin/usuario";
}
// Delete
public String excluir() throws BException {
bUsuario.remove(this.usuario);
return null;
}
}
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type"
content="Ttext/html; chareset=ISO-8859-1" />
<title>Cadastro de Usuários</title>
</h:head>
<h:body>
<h1 />
<h:form id="cadastro">
<p:messages />
<h:inputHidden value="#{usuarioBean.usuario.id}" />
<h:inputHidden value="#{usuarioBean.usuario.dataInatividade}" />
<h:inputHidden value="#{usuarioBean.usuario.permissao}" />
<p:panelGrid columns="1">
<f:facet name="header">
Cadastro de Usuários
</f:facet>
<h:outputLabel for="nome" value="Nome: *" />
<p:inputText id="nome" value="#{usuarioBean.usuario.nome}"
required="true" label="Nome" size="50" maxlength="50"
requiredMessage="Favor insira o nome.">
<f:validateLength minimum="10" maximum="50" />
</p:inputText>
<h:outputLabel for="login" value="Login: *" />
<p:inputText id="login" value="#{usuarioBean.usuario.login}"
required="true" label="Login" size="20" maxlength="20"
validatorMessage="Login deve ter no mínimo 8 e no máximo
20 caracteres e só pode ter os símbolos '.' e '_'.">
<f:validateRegex pattern="([a-z]|[0-9]|[.]|[_]|[8,20])" />
</p:inputText>
<h:outputLabel for="senha" value="Senha: *" />
<h:inputSecret id="senha" value="#{usuarioBean.usuario.senha}"
label="Senha" size="10" maxlength="10" required="true"
redisplay="true" />
<h:outputLabel for="confirmarsenha" value="Confrimar senha: *" />
<h:inputSecret id="confirmarsenha"
value="#{usuarioBean.confirmarSenha}" label="Confirmar senha"
size="10" maxlength="10" required="true" redisplay="true" />
<f:facet name="footer">
<p:commandButton value="Salvar" action="#{usuarioBean.salvar()}" />
</f:facet>
</p:panelGrid>
</h:form>
</h:body>
</html>
