Boa noite galera, Tenho uma aplicação aonde o usuário pode clicar no menu e nesse momento abrir a tela de edição dos seus dados. quando ele faz o seu primeiro registro ele registra apenas o cpf e a senha do usuário para logar e depois então terminar o seu cadastro logando no sistema e indo até o menu de editar dados (que no caso seria os dados do mesmo logado)
o problema: Não consigo de forma alguma carregar os dados do usuário =/
segue os codigos
Controller
package br.com.estagio.controller;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import br.com.estagio.beans.Administrador;
import br.com.estagio.beans.Cursos;
import br.com.estagio.beans.Login;
import br.com.estagio.modelo.AdministradorDAO;
import br.com.estagio.util.UtilMensagens;
@ManagedBean(name="controllerAdministrador")
@RequestScoped
public class ControllerAdministrador {
private Administrador administrador;
private AdministradorDAO administradorDAO;
private Login login;
public ControllerAdministrador(){
administradorDAO = new AdministradorDAO();
}
@PostConstruct
public void init(){
this.administrador = new Administrador();
this.login = new Login();
}
/*
* Cadastro do aluno
*/
public String Gravar(){
login.setId(ControllerLogin.getSingletonLogado().getId());
administrador.setId_login(login);
if(administradorDAO.Adicionar(administrador)){
return "form";
} else {
return "form";
}
}
//método de redirecionamento para a listagem dos administradores cadastrados
public String listar(){
return "/admin/cad_admin/listar?faces-redirect=true";
}
//Criar um novo curso.
public String novo(){
administrador = new Administrador();
return "form";
}
public String editarMeusDados(){
administrador = administradorDAO.listarDadosAdministradorLogado();
return "/admin/edi_admin/form?faces-redirect=true";
}
//Método relacionado para voltar a listagem de curso
public String cancelar() {
return "/admin/edi_admin/form?faces-redirect=true";
}
public Administrador getAdministrador() {
return administrador;
}
public void setAdministrador(Administrador administrador) {
this.administrador = administrador;
}
public AdministradorDAO getAdministradorDAO() {
return administradorDAO;
}
public void setAdministradorDAO(AdministradorDAO administradorDAO) {
this.administradorDAO = administradorDAO;
}
}
Bean
package br.com.estagio.beans;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Index;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
@SuppressWarnings("serial")
@Entity
@Table(name="administrador")
public class Administrador implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Integer id;
@Length(max=150, message="O nome não pode passar de {max} caracteres")
@NotEmpty(message="O nome não pode estar vazio")
@Column(name="nome", length=150, nullable=false)
@Index(name="IDX_ALUNOS_NOME")
private String nome;
@NotEmpty(message="O e-mail deve ser informado")
@Email(message="Informe um e-mail valido")
@Column(name="email", length=200, nullable=false)
private String email;
@NotNull(message="A data de nascimento deve ser informada")
@Column(name="data_nascimento", nullable=false, length=30)
@Temporal(TemporalType.DATE)
private Date data_nascimento;
@NotNull(message="A unidade deve ser informado")
@OneToOne
@JoinColumn(name="id_unidade", referencedColumnName="id", nullable=false)
private Unidades unidade;
@NotNull(message="A cidade deve ser informado")
@OneToOne
@JoinColumn(name="id_cidade", referencedColumnName="id", nullable=false)
private Cidade cidade;
@NotNull(message="O telefone deve ser informado")
@Column(name="telefone", nullable=false)
private String telefone;
@Column(name="celular", nullable=true)
private String celular;
@NotEmpty(message="O sexo deve ser informado")
@Column(name="sexo", length=2, nullable=false)
private String sexo;
@NotNull(message="código do login deve ser informado")
@OneToOne
@JoinColumn(name="id_login", referencedColumnName="id", nullable=false)
private Login id_login;
public Administrador(){}
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getData_nascimento() {
return data_nascimento;
}
public void setData_nascimento(Date data_nascimento) {
this.data_nascimento = data_nascimento;
}
public Unidades getUnidade() {
return unidade;
}
public void setUnidade(Unidades unidade) {
this.unidade = unidade;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.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;
Administrador other = (Administrador) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return nome;
}
public Login getId_login() {
return id_login;
}
public void setId_login(Login id_login) {
this.id_login = id_login;
}
}
DAO
package br.com.estagio.modelo;
import java.util.List;
import javax.persistence.EntityManager;
import br.com.estagio.beans.Administrador;
import br.com.estagio.beans.Alunos;
import br.com.estagio.beans.Login;
import br.com.estagio.controller.ControllerLogin;
import br.com.estagio.jpa.EntityManagerUtil;
import br.com.estagio.util.UtilErros;
import br.com.estagio.util.UtilMensagens;
public class AdministradorDAO {
private EntityManager em;
public AdministradorDAO(){
em = EntityManagerUtil.getEntityManager();
}
@SuppressWarnings("unchecked")
public List<Administrador> listarAdministrador(){
return em.createQuery("FROM Administrador GROUP BY nome").getResultList();
}
public Administrador listarDadosAdministradorLogado(){
return (Administrador) em.createQuery("FROM Administrador WHERE id_login ="+ControllerLogin.getSingletonLogado().getId()).getSingleResult();
}
/**
* Adicionar um novo aluno
*
* @param obj
* @return
*/
public boolean Adicionar(Administrador obj){
try {
//iniciar transação
em.getTransaction().begin();
//verifico se é um objeto novo
if(obj.getId() == null){
// obj.setId_login(login.getUsuarioLogado().getId());
em.persist(obj);
} else {
em.merge(obj);
}
em.getTransaction().commit();
//exibo a mensagem para o usuário
UtilMensagens.mensagemInformacao("Administrador Cadastrado com sucesso!");
return true;
} catch (Exception e) {
//Verifica se a conexão estar inativa, se estive inicia a conexão
if(em.getTransaction().isActive() == false){
em.getTransaction().begin();
}
//Volta e tira os dados que tentou adicionar
em.getTransaction().rollback();
UtilMensagens.mensagemErro("Erro ao inserir Aluno: "+ UtilErros.getMensagemErro(e));
return false;
}
}
}
form
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="../../layout/admin/header.xhtml">
<ui:define name="tituloConteudo">ALFA - Administradores</ui:define>
<ui:define name="conteudoSistema">
<div class="container">
<div class="well col-md-12">
<div class="panel panel-danger">
<div class="panel-heading">ADMINISTRADOR</div>
<div class="panel-body">
<div class="form-group col-md-12">
<h:form >
<h:messages />
<div class="row">
<div class="form-group col-md-3">
<label for="cpf">CPF </label>
<h:inputText class="form-control" type="text" id="cpf" name="cpf" value="#{controllerLogin.usuarioLogado.cpf}" />
</div>
<div class="form-group col-md-4">
<label for="nome">Nome </label>
<h:inputText class="form-control" type="text" id="nome" name="nome" value="#{controllerAdministrador.administrador.nome}" />
</div>
<div class="form-group col-md-3">
<label for="email">E-mail </label>
<h:inputText class="form-control" type="text" id="email" name="email" value="#{controllerAdministrador.administrador.email}" />
</div>
<div class="form-group col-md-2">
<label for="email">Data Nascimento </label>
<h:inputText class="form-control" type="text" id="data_nascimento" name="data_nascimento" value="#{controllerAdministrador.administrador.data_nascimento}">
<f:convertDateTime type="date" pattern="dd/mm/yyyy" />
</h:inputText>
</div>
</div>
<div class="row">
<div class="form-group col-md-3">
<label for="telefone"> Telefone </label>
<h:inputText class="form-control" value="#{controllerAdministrador.administrador.telefone}" />
</div>
<div class="form-group col-md-3">
<label for="celular"> Celular </label>
<h:inputText class="form-control" value="#{controllerAdministrador.administrador.celular}" />
</div>
<div class="form-group col-md-3" >
<h:outputLabel for="sexo" />
<h:selectOneRadio class="form-group" value="#{controllerAdministrador.administrador.sexo}">
<f:selectItem itemValue="M" itemLabel="Masculino " />
<f:selectItem itemValue="F" itemLabel="Feminino" />
</h:selectOneRadio>
</div>
<div class="form-group col-md-3" >
<label for="unidade">Unidade </label>
<h:selectOneMenu class="form-control" id="unidade" name="unidade" value="#{controllerAdministrador.administrador.unidade}" converter="entityConverter">
<f:selectItem itemValue="#{null}" itemLabel="Selecione uma unidade" />
<f:selectItems value="#{controllerUnidades.dao.ListarUnidade()}" var="unidade"
itemValue="#{unidade}" itemLabel="#{unidade.nome}" />
</h:selectOneMenu>
</div>
</div>
<div class="row">
<div class="form-group col-md-2" >
<label for="estado">Estado </label>
<h:selectOneMenu class="form-control" id="estado" name="estado">
<f:selectItem itemValue="#{null}" itemLabel="GO" />
</h:selectOneMenu>
</div>
<div class="form-group col-md-3" >
<label for="cidade">Cidade </label>
<h:selectOneMenu class="form-control" id="cidade" name="cidade" value="#{controllerAdministrador.administrador.cidade}" converter="entityConverter">
<f:selectItem itemValue="#{null}" itemLabel="Selecione uma cidade" />
<f:selectItems value="#{controllerCidades.dao.ListarCidadePorUF()}" var="cidade"
itemValue="#{cidade}" itemLabel="#{cidade.nome}" />
</h:selectOneMenu>
</div>
</div>
<div align="right">
<br />
<h:commandButton class="btn btn-success btn-sm" action="#{controllerAdministrador.Gravar()}" value="Salvar" /> </div>
</h:form>
</div>
</div>
</div>
</div>
</div>
</ui:define>
</ui:composition>
</html>
Header (Onde carrega o Menu)
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title><ui:insert name="tituloConteudo"></ui:insert></title>
<!-- Bootstrap core CSS -->
<h:outputStylesheet library="css" name="bootstrap.css" />
<h:outputStylesheet library="css" name="style.css" />
<!-- font Awesome -->
<h:outputStylesheet library="css" name="font-awesome.min.css" />
<h:outputStylesheet library="css" name="bootstrap.icon-large.css" />
<!-- Theme style -->
<h:outputScript library="js" name="jquery-1.7.2.js" />
<h:outputScript library="js" name="bootstrap.min.js" />
<!-- Just for debugging purposes. Don't actually copy this line! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</h:head>
<body>
<h:form>
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">ALFA ESTÁGIO</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Administrador<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><h:commandLink action="#{controllerAdministrador.editarMeusDados()}" value="Editar dados" /> </li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Faculdade<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><h:commandLink action="#{controllerUnidades.Listar()}" value="Cadastrar Unidade" /></li>
<li><h:commandLink action="#{controllerCursos.listar()}" value="Cadastrar Curso" /></li>
<li><h:commandLink action="#{controllerAdministrador.listar()}" value="Cadastrar Administrador" /></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Buscar <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#"> Aluno </a></li>
<li><a href="#"> Administrador </a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Vagas <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#"> Cadastrar Vaga </a></li>
<li><a href="#"> Enviar E-mail </a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</h:form>
<ui:insert name="conteudoSistema">
</ui:insert>
</body>
</html>