Pessoal, desejo criar um formulário de alteração. Que vai exibir as atuais informações e que possam ser editadas.
Não estou tendo o resultado desejável, alguém consegue identificar algo faltando ?
@Entity
public class Pessoa implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column (name="id_Pessoa")
private Integer id;
@Column()
private String nomeUsuario;
@Column()
private String senhaUsuario;
@Column()
private String nomeCompleto;
@Column()
private String email;
@Column()
private Integer idade;
/*@ManyToMany
@JoinTable(name="Pessoa_Time",joinColumns={@JoinColumn(name="id_pessoa")},
inverseJoinColumns={@JoinColumn(name="id_time")})*/
@ManyToMany(mappedBy="listaPessoas")
private List<Time> listaTimes;
public Pessoa (){}
public Pessoa (Pessoa pessoa){
this.id = pessoa.getId();
this.nomeUsuario = pessoa.getNomeUsuario();
this.senhaUsuario = pessoa.getSenhaUsuario();
this.nomeCompleto = pessoa.getNomeCompleto();
this.email = pessoa.getEmail();
this.idade = pessoa.getIdade();
}
// Gets e Sets omitidos
}
}
PessoaDAO:
public class PessoaDAO {
private EntityManager em;
public PessoaDAO() {
setEm(JPAUtil.getEntityManager());
}
public void cadastrar(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().persist(pessoa);
getEm().getTransaction().commit();
}
public void atualizar(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().merge(pessoa);
getEm().getTransaction().commit();
}
public List<Pessoa> listaTodasPessoas(){
Query q = em.createQuery("select p from Pessoa p");
List<Pessoa> pessoas = q.getResultList();
return pessoas;
}
public boolean existe(Pessoa pessoa) {
String consulta = "select u from Pessoa u where u.nomeUsuario = :pUsuario and u.senhaUsuario = :pSenha";
Query query=getEm().createQuery(consulta);
query.setParameter("pUsuario", pessoa.getNomeUsuario());
query.setParameter("pSenha", pessoa.getSenhaUsuario());
try {
Pessoa resultado = (Pessoa) query.getSingleResult();
} catch (NoResultException ex) {
return false;
}
return true;
}
public Pessoa pessoaLogada(Pessoa pessoa) {
Pessoa resultado = new Pessoa();
String consulta = "select u from Pessoa u where u.nomeUsuario = :pUsuario";
Query query=getEm().createQuery(consulta);
query.setParameter("pUsuario", pessoa.getNomeUsuario());
try {
resultado = (Pessoa) query.getSingleResult();
} catch (NoResultException ex) {
return null;
}catch (NonUniqueObjectException e) {
return null;
}
return resultado;
}
public void removerPessoa(Pessoa pessoa){
getEm().getTransaction().begin();
getEm().find(Pessoa.class, pessoa.getId());
getEm().remove(pessoa);
getEm().getTransaction().commit();
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
}
PessoaBean:
@ManagedBean(name = "pessoaBean")
@SessionScoped
public class PessoaBean implements Serializable{
private static final long serialVersionUID = 1L;
private Pessoa pessoa = new Pessoa();
private PessoaDAO dao = new PessoaDAO();
public PessoaBean(){}
public Pessoa usuarioLogado(){
FacesContext context = FacesContext.getCurrentInstance() ;
Pessoa usuarioLogado = (Pessoa) context.getExternalContext() .getSessionMap().get("usuarioLogado");
Integer id = usuarioLogado.getId();
Pessoa p = getDao().pessoaLogada(usuarioLogado);
return p;
}
public String cadastrar() {
getDao().cadastrar(getPessoa());
limpaTela();
return "login.xhtml";
}
public void limpaTela(){
setPessoa(null);
}
public String atualizar() {
getDao().atualizar(pessoa);
return "perfil.xhtml";
}
public void logar() {
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public PessoaDAO getDao() {
return dao;
}
public void setDao(PessoaDAO dao) {
this.dao = dao;
}
}
editarPefil:
<form class="form-label">
<div class="form-group row">
<label for="thread" class="col-md-2">Nome completo:</label>
<div class="col-md-10">
<h:inputText
value="#{pessoaBean.usuarioLogado().nomeCompleto}"
type="nome" class="form-control" id="nome"
placeholder="Altere seu nome completo" />
</div>
</div>
<div class="form-group row">
<label for="description" class="col-md-2">Idade</label>
<div class="col-md-10">
<h:inputText value="#{pessoaBean.usuarioLogado().idade}"
type="nome" class="form-control" id="nome"
placeholder="Altere sua idade" />
</div>
</div>
<h:commandButton action="#{pessoaBean.atualizar()}"
value="Confirmar Edições"
class="btn btn-lg btn-block btn-rounded btn-shadow btn-primary " />
</form>