Write method has no action and link of Dependent x Driver is not done

1

When developing a simple application where the dependent is bound to its responsible who is a driver, when I click to create the bind and write dependent nothing happens, only the following message is posted without interrupting the application.

out 28, 2017 3:19:15 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_idt4:motorista[severity=(ERROR 2), summary=(j_idt4:motorista: 'Pessoa [nome=ROBSON GOMES JUNIOR, cpf=, rg=, nomeMae=, nomePai=, dataNascimento=, rua=, numeroCasa=, bairro=, cidade=, estado=, cep=]' must be a number consisting of one or more digits.), detail=(j_idt4:motorista: 'Pessoa [nome=ROBSON GOMES JUNIOR, cpf=, rg=, nomeMae=, nomePai=, dataNascimento=, rua=, numeroCasa=, bairro=, cidade=, estado=, cep=]' must be a number between -2147483648 and 2147483647 Example: 9346)]

Bean

package modelo;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import modeloDAO.DAO;

@ManagedBean
@ViewScoped
public class DependenteBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private Dependente dependente = new Dependente();
    private Integer motoristaId;

    public void setMotoristaId(Integer motoristaId) {
        this.motoristaId = motoristaId;
    }

    public Integer getMotoristaId() {
        return motoristaId;
    }

    public Dependente getDependente() {
        return dependente;
    }

    public List<Motorista> getMotoristas() {
        return new DAO<Motorista>(Motorista.class).listaTodos();
    }

    public void gravarMotorista() {
        Motorista motorista = new DAO<Motorista>(Motorista.class).buscaPorId(this.motoristaId);
        this.dependente.adicionaMotorista(motorista);
    }

    public void gravar() {
        gravarMotorista();
        System.out.println("Gravando Dependente: " + this.dependente.toString());
        new DAO<Dependente>(Dependente.class).adiciona(this.dependente);
        this.dependente = new Dependente();

    }

}

XHTML

<h:body>
    <h1>Novo Dependente</h1>
    <h:form>

        <fieldset>
            <legend>Dados do Dependente</legend>
            <h:panelGrid columns="2">
                <h:outputLabel value="Nome: " for="nome" />
                <h:inputText id="nome" value="#{dependenteBean.dependente.nome}" />

                <h:outputLabel value="Data de Nascimento: " for="dataNascimento" />
                <h:inputText id="dataNascimento" value="#{dependenteBean.dependente.dataNascimento}" />

                <h:outputLabel value="CPF: " for="cpf" />
                <h:inputText id="cpf" value="#{dependenteBean.dependente.cpf}" />

                <h:outputLabel value="RG: " for="rg" />
                <h:inputText id="rg" value="#{dependenteBean.dependente.rg}" />

                <h:outputLabel value="Nome da Mãe: " for="nomeMae" />
                <h:inputText id="nomeMae" value="#{dependenteBean.dependente.nomeMae}" />
                <h:outputLabel value="Nome da Pai: " for="nomePai" />
                <h:inputText id="nomePai" value="#{dependenteBean.dependente.nomePai}" />
                <h:outputLabel value="Nome da Rua: " for="rua" />
                <h:inputText id="rua" value="#{dependenteBean.dependente.rua}" />
                <h:outputLabel value="Numero da Casa ou Apartamento: " for="numeroCasa" />
                <h:inputText id="numeroCasa" value="#{dependenteBean.dependente.numeroCasa}" />
                <h:outputLabel value="Bairro: " for="bairro" />
                <h:inputText id="bairro" value="#{dependenteBean.dependente.bairro}" />
                <h:outputLabel value="Cidade: " for="cidade" />
                <h:inputText id="cidade" value="#{dependenteBean.dependente.cidade}" />
                <h:outputLabel value="Estado: " for="estado" />
                <h:inputText id="estado" value="#{dependenteBean.dependente.estado}" />
                <h:outputLabel value="CEP: " for="cep" />
                <h:inputText id="cep" value="#{dependenteBean.dependente.cep}" />
                <h:commandButton value="Cadastrar" action="#{dependenteBean.gravar}" />
            </h:panelGrid>
        </fieldset>

        <fieldset>
            <legend>Dados do Motorista</legend>
            <h:outputLabel value="Selecione Motorista" for="motorista" />
            <h:selectOneMenu value="#{dependenteBean.motoristaId}" id="motorista">
                <f:selectItems value="#{dependenteBean.motoristas}" var="motorista" itemLabel="#{motorista.nome}" itemValue="#{pessoa.motorista.id}" />
            </h:selectOneMenu>
<!--            <h:message for="motorista" /> -->
            <h:commandButton value="Gravar Motorista" action="#{dependenteBean.gravarMotorista}" />
        </fieldset>
    </h:form>
</h:body>

Dependent Class

package modelo;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "DEPENDENTE")
public class Dependente extends Pessoa {

    @ManyToOne(fetch = FetchType.EAGER) // MUITOS DEPENDENTES PARA 1 MOTORISTA
    private Motorista motorista;

    public Dependente() {
        super();
    }

    @Override
    public String getNome() {
        // TODO Auto-generated method stub
        return super.getNome();
    }

    @Override
    public void setNome(String nome) {
        // TODO Auto-generated method stub
        super.setNome(nome);
    }

    @Override
    public String getCpf() {
        // TODO Auto-generated method stub
        return super.getCpf();
    }

    @Override
    public void setCpf(String cpf) {
        // TODO Auto-generated method stub
        super.setCpf(cpf);
    }

    @Override
    public String getRg() {
        // TODO Auto-generated method stub
        return super.getRg();
    }

    @Override
    public void setRg(String rg) {
        // TODO Auto-generated method stub
        super.setRg(rg);
    }

    @Override
    public String getNomeMae() {
        // TODO Auto-generated method stub
        return super.getNomeMae();
    }

    @Override
    public void setNomeMae(String nomeMae) {
        // TODO Auto-generated method stub
        super.setNomeMae(nomeMae);
    }

    @Override
    public String getNomePai() {
        // TODO Auto-generated method stub
        return super.getNomePai();
    }

    @Override
    public void setNomePai(String nomePai) {
        // TODO Auto-generated method stub
        super.setNomePai(nomePai);
    }

    @Override
    public String getDataNascimento() {
        // TODO Auto-generated method stub
        return super.getDataNascimento();
    }

    @Override
    public void setDataNascimento(String dataNascimento) {
        // TODO Auto-generated method stub
        super.setDataNascimento(dataNascimento);
    }

    @Override
    public String getRua() {
        // TODO Auto-generated method stub
        return super.getRua();
    }

    @Override
    public void setRua(String rua) {
        // TODO Auto-generated method stub
        super.setRua(rua);
    }

    @Override
    public String getNumeroCasa() {
        // TODO Auto-generated method stub
        return super.getNumeroCasa();
    }

    @Override
    public void setNumeroCasa(String numeroCasa) {
        // TODO Auto-generated method stub
        super.setNumeroCasa(numeroCasa);
    }

    @Override
    public String getBairro() {
        // TODO Auto-generated method stub
        return super.getBairro();
    }

    @Override
    public void setBairro(String bairro) {
        // TODO Auto-generated method stub
        super.setBairro(bairro);
    }

    @Override
    public String getCidade() {
        // TODO Auto-generated method stub
        return super.getCidade();
    }

    @Override
    public void setCidade(String cidade) {
        // TODO Auto-generated method stub
        super.setCidade(cidade);
    }

    @Override
    public String getEstado() {
        // TODO Auto-generated method stub
        return super.getEstado();
    }

    @Override
    public void setEstado(String estado) {
        // TODO Auto-generated method stub
        super.setEstado(estado);
    }

    @Override
    public String getCep() {
        // TODO Auto-generated method stub
        return super.getCep();
    }

    @Override
    public void setCep(String cep) {
        // TODO Auto-generated method stub
        super.setCep(cep);
    }

    // ADICIONA MOTORISTA
    public void adicionaMotorista(Motorista motorista) {
        this.motorista = motorista;
    }

    public Motorista getMotorista() {
        return motorista;
    }

    @Override
    public String toString() {
        return "Dependente [motorista=" + motorista + ", getNome()=" + getNome() + ", getCpf()=" + getCpf() + ", getRg()=" + getRg() + ", getNomeMae()=" + getNomeMae() + ", getNomePai()=" + getNomePai() + ", getDataNascimento()=" + getDataNascimento() + ", getRua()=" + getRua() + ", getNumeroCasa()=" + getNumeroCasa() + ", getBairro()=" + getBairro() + ", getCidade()=" + getCidade() + ", getEstado()=" + getEstado() + ", getCep()=" + getCep() + ", getMotorista()=" + getMotorista() + "]";
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((motorista == null) ? 0 : motorista.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;
        Dependente other = (Dependente) obj;
        if (motorista == null) {
            if (other.motorista != null)
                return false;
        } else if (!motorista.equals(other.motorista))
            return false;
        return true;
    }

}

Driver Class

package modelo;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "MOTORISTA")
public class Motorista extends Pessoa {

    private String cnhMotorista;
    private String validadeCnh;

    @OneToMany(mappedBy = "motorista")
    private List<Dependente> dependentes;

    @ManyToOne
    private Carro carro;

    @OneToMany(mappedBy = "motorista")
    private List<Viagem> viagens;

    public Motorista() {
        super();
    }

    public String getCnhMotorista() {
        return cnhMotorista;
    }

    public void setCnhMotorista(String cnhMotorista) {
        this.cnhMotorista = cnhMotorista;
    }

    public String getValidadeCnh() {
        return validadeCnh;
    }

    public void setValidadeCnh(String validadeCnh) {
        this.validadeCnh = validadeCnh;
    }

    @Override
    public String getNome() {
        // TODO Auto-generated method stub
        return super.getNome();
    }

    @Override
    public void setNome(String nome) {
        // TODO Auto-generated method stub
        super.setNome(nome);
    }

    @Override
    public String getCpf() {
        // TODO Auto-generated method stub
        return super.getCpf();
    }

    @Override
    public void setCpf(String cpf) {
        // TODO Auto-generated method stub
        super.setCpf(cpf);
    }

    @Override
    public String getRg() {
        // TODO Auto-generated method stub
        return super.getRg();
    }

    @Override
    public void setRg(String rg) {
        // TODO Auto-generated method stub
        super.setRg(rg);
    }

    @Override
    public String getNomeMae() {
        // TODO Auto-generated method stub
        return super.getNomeMae();
    }

    @Override
    public void setNomeMae(String nomeMae) {
        // TODO Auto-generated method stub
        super.setNomeMae(nomeMae);
    }

    @Override
    public String getNomePai() {
        // TODO Auto-generated method stub
        return super.getNomePai();
    }

    @Override
    public void setNomePai(String nomePai) {
        // TODO Auto-generated method stub
        super.setNomePai(nomePai);
    }

    @Override
    public String getDataNascimento() {
        // TODO Auto-generated method stub
        return super.getDataNascimento();
    }

    @Override
    public void setDataNascimento(String dataNascimento) {
        // TODO Auto-generated method stub
        super.setDataNascimento(dataNascimento);
    }

    @Override
    public String getRua() {
        // TODO Auto-generated method stub
        return super.getRua();
    }

    @Override
    public void setRua(String rua) {
        // TODO Auto-generated method stub
        super.setRua(rua);
    }

    @Override
    public String getNumeroCasa() {
        // TODO Auto-generated method stub
        return super.getNumeroCasa();
    }

    @Override
    public void setNumeroCasa(String numeroCasa) {
        // TODO Auto-generated method stub
        super.setNumeroCasa(numeroCasa);
    }

    @Override
    public String getBairro() {
        // TODO Auto-generated method stub
        return super.getBairro();
    }

    @Override
    public void setBairro(String bairro) {
        // TODO Auto-generated method stub
        super.setBairro(bairro);
    }

    @Override
    public String getCidade() {
        // TODO Auto-generated method stub
        return super.getCidade();
    }

    @Override
    public void setCidade(String cidade) {
        // TODO Auto-generated method stub
        super.setCidade(cidade);
    }

    @Override
    public String getEstado() {
        // TODO Auto-generated method stub
        return super.getEstado();
    }

    @Override
    public void setEstado(String estado) {
        // TODO Auto-generated method stub
        super.setEstado(estado);
    }

    @Override
    public String getCep() {
        // TODO Auto-generated method stub
        return super.getCep();
    }

    @Override
    public void setCep(String cep) {
        // TODO Auto-generated method stub
        super.setCep(cep);
    }

    public List<Dependente> getDependentes() {
        return dependentes;
    }

    public void setDependentes(List<Dependente> dependentes) {
        this.dependentes = dependentes;
    }

    public Carro getCarro() {
        return carro;
    }

    public void setCarro(Carro carro) {
        this.carro = carro;
    }

    @Override
    public String toString() {
        return "Motorista [getCnhMotorista()=" + getCnhMotorista() + ", getValidadeCnh()=" + getValidadeCnh() + ", getNome()=" + getNome() + ", getCpf()=" + getCpf() + ", getRg()=" + getRg() + ", getNomeMae()=" + getNomeMae() + ", getNomePai()=" + getNomePai() + ", getDataNascimento()=" + getDataNascimento()   + ", getRua()=" + getRua() + ", getNumeroCasa()=" + getNumeroCasa() + ", getBairro()=" + getBairro() + ", getCidade()=" + getCidade() + ", getEstado()=" + getEstado() + ", getCep()=" + getCep()   + ", getDependentes()=" + getDependentes() + ", getCarro()=" + getCarro() + "]";
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((carro == null) ? 0 : carro.hashCode());
        result = prime * result + ((cnhMotorista == null) ? 0 : cnhMotorista.hashCode());
        result = prime * result + ((dependentes == null) ? 0 : dependentes.hashCode());
        result = prime * result + ((validadeCnh == null) ? 0 : validadeCnh.hashCode());
        result = prime * result + ((viagens == null) ? 0 : viagens.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;
        Motorista other = (Motorista) obj;
        if (carro == null) {
            if (other.carro != null)
                return false;
        } else if (!carro.equals(other.carro))
            return false;
        if (cnhMotorista == null) {
            if (other.cnhMotorista != null)
                return false;
        } else if (!cnhMotorista.equals(other.cnhMotorista))
            return false;
        if (dependentes == null) {
            if (other.dependentes != null)
                return false;
        } else if (!dependentes.equals(other.dependentes))
            return false;
        if (validadeCnh == null) {
            if (other.validadeCnh != null)
                return false;
        } else if (!validadeCnh.equals(other.validadeCnh))
            return false;
        if (viagens == null) {
            if (other.viagens != null)
                return false;
        } else if (!viagens.equals(other.viagens))
            return false;
        return true;
    }

}

DAO

package modeloDAO;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaQuery;

public class DAO<T> {


    private final Class<T> classe;


    public DAO(Class<T> classe) {
        this.classe = classe;
    }

    public void adiciona(T t) {

        // consegue a entity manager
        EntityManager em = new JPAUtil().getEntityManager();

        // abre transacao
        em.getTransaction().begin();

        // persiste o objeto
        em.persist(t);

        // commita a transacao
        em.getTransaction().commit();

        // fecha a entity manager
        em.close();
    }

    public void remove(T t) {
        EntityManager em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();

        em.remove(em.merge(t));

        em.getTransaction().commit();
        em.close();
    }

    public void atualiza(T t) {
        EntityManager em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();

        em.merge(t);

        em.getTransaction().commit();
        em.close();
    }

    public List<T> listaTodos() {
        EntityManager em = new JPAUtil().getEntityManager();
        CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
        query.select(query.from(classe));

        List<T> lista = em.createQuery(query).getResultList();

        em.close();
        return lista;
    }

    public T buscaPorId(Integer id) {
        EntityManager em = new JPAUtil().getEntityManager();
        T instancia = em.find(classe, id);
        em.close();
        return instancia;
    }

    public int contaTodos() {
        EntityManager em = new JPAUtil().getEntityManager();
        long result = (Long) em.createQuery("select count(n) from livro n").getSingleResult();
        em.close();

        return (int) result;
    }

    public List<T> listaTodosPaginada(int firstResult, int maxResults) {
        EntityManager em = new JPAUtil().getEntityManager();
        CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
        query.select(query.from(classe));

        List<T> lista = em.createQuery(query).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();

        em.close();
        return lista;
    }

}
    
asked by anonymous 28.10.2017 / 19:30

1 answer

0

Looking at the HTML of the reported problem, I noticed that in the excerpt:

<f:selectItems value="#{dependenteBean.motoristas}" var="motorista" itemLabel="#{motorista.nome}" itemValue="#{pessoa.motorista.id}" />

You make a reference to a pessoa object that does not exist in the scope of the code, but motorista is declared as the variable's nickname.

The above excerpt should be:

<f:selectItems value="#{dependenteBean.motoristas}" var="motorista" itemLabel="#{motorista.nome}" itemValue="#{motorista.id}" />

In this way, I believe changing the code to:

<h:body>
    <h1>Novo Dependente</h1>
<h:form>

    <fieldset>
        <legend>Dados do Dependente</legend>
        <h:panelGrid columns="2">
            <h:outputLabel value="Nome: " for="nome" />
            <h:inputText id="nome" value="#{dependenteBean.dependente.nome}" />

            <h:outputLabel value="Data de Nascimento: " for="dataNascimento" />
            <h:inputText id="dataNascimento" value="#{dependenteBean.dependente.dataNascimento}" />

            <h:outputLabel value="CPF: " for="cpf" />
            <h:inputText id="cpf" value="#{dependenteBean.dependente.cpf}" />

            <h:outputLabel value="RG: " for="rg" />
            <h:inputText id="rg" value="#{dependenteBean.dependente.rg}" />

            <h:outputLabel value="Nome da Mãe: " for="nomeMae" />
            <h:inputText id="nomeMae" value="#{dependenteBean.dependente.nomeMae}" />
            <h:outputLabel value="Nome da Pai: " for="nomePai" />
            <h:inputText id="nomePai" value="#{dependenteBean.dependente.nomePai}" />
            <h:outputLabel value="Nome da Rua: " for="rua" />
            <h:inputText id="rua" value="#{dependenteBean.dependente.rua}" />
            <h:outputLabel value="Numero da Casa ou Apartamento: " for="numeroCasa" />
            <h:inputText id="numeroCasa" value="#{dependenteBean.dependente.numeroCasa}" />
            <h:outputLabel value="Bairro: " for="bairro" />
            <h:inputText id="bairro" value="#{dependenteBean.dependente.bairro}" />
            <h:outputLabel value="Cidade: " for="cidade" />
            <h:inputText id="cidade" value="#{dependenteBean.dependente.cidade}" />
            <h:outputLabel value="Estado: " for="estado" />
            <h:inputText id="estado" value="#{dependenteBean.dependente.estado}" />
            <h:outputLabel value="CEP: " for="cep" />
            <h:inputText id="cep" value="#{dependenteBean.dependente.cep}" />
            <h:commandButton value="Cadastrar" action="#{dependenteBean.gravar}" />
        </h:panelGrid>
    </fieldset>

    <fieldset>
        <legend>Dados do Motorista</legend>
        <h:outputLabel value="Selecione Motorista" for="motorista" />
        <h:selectOneMenu value="#{dependenteBean.motoristaId}" id="motorista">
            <f:selectItems value="#{dependenteBean.motoristas}" var="motorista" itemLabel="#{motorista.nome}" itemValue="#{motorista.id}" />
        </h:selectOneMenu>
<!--            <h:message for="motorista" /> -->
        <h:commandButton value="Gravar Motorista" action="#{dependenteBean.gravarMotorista}" />
    </fieldset>
</h:form>
</h:body>

your application will work again.

    
28.10.2017 / 22:48