Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Criando função de edição

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>
2 respostas

Olá Rafael,

Qual o problema que está acontecendo?

solução!

A solução para esse problema foi resolvida em outra duvida minha no fórum: https://cursos.alura.com.br/forum/topico-exibir-nome-do-usuario-logado-no-input-21959

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software