I’m trying to return the name but can only return the ID

Asked

Viewed 213 times

0

I’ve been researching for days and I couldn’t find a solution.

The scenario and the following:

I have an employee registration screen and an employee editing screen with two classes a pessoa where I have generic property such as name, address and class funcionário where I have property such as wages, position etc.

It is saved right and displaying in her report for a possible deletion or editing.

My problem is when I’m on the report screen and I click the edit button, it takes me to the registration screen already with the employee data, but the class data pessoa is not coming.

I managed to do it so far returns in the field name the Id, more should return the nome.

Below follows the code made so far:

registration screen

<!DOCTYPE html>
<ui:composition template="/WEB-INF/template/Layout.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui">
    <f:metadata>
        <o:viewParam name="id" value="#{cadastroFuncionarioBean.funcionario}" />
        <f:viewAction action="#{cadastroFuncionarioBean.prepararCadastro}" />
    </f:metadata>
    <ui:define name="titulo">Cadastro RH</ui:define>
    <ui:define name="corpo">
        <h1>Cadastro de Funcionários</h1>
        <h:form id="frm">
            <p:messages showDetail="false" showSummary="true" autoUpdate="true" />

            <h3>Dados Pessoais</h3>
            <p:panelGrid columns="4">

                <p:outputLabel value="Nome" for="nome" />
                <p:autoComplete id="nome" size="60"
                    value="#{cadastroFuncionarioBean.funcionario.pessoa}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarNomes}" />

                    <p:outputLabel value="Cpf" for="cpf" />
                    <p:autoComplete id="cpf" size="14"
                        value="#{cadastroFuncionarioBean.funcionario.cpf}"
                        completeMethod="#{cadastroFuncionarioBean.pesquisarCpfs}" />

                    <p:outputLabel value="Tipo" for="sexo" />
                    <p:selectOneButton id="sexo"
                        value="#{cadastroFuncionarioBean.funcionario.sexo}">
                        <f:selectItems
                            value="#{cadastroFuncionarioBean.tiposFuncionarios}"
                            var="tipoFuncionario" itemValue="#{tipoFuncionario}"
                            itemLabel="#{tipoFuncionario.sexo}" />
                    </p:selectOneButton>

            </p:panelGrid>

            <h3>Endereço</h3>

            <p:panelGrid columns="4">

                <p:outputLabel value="Endereço" for="endereco" />
                <p:autoComplete id="endereco" size="60"
                    value="#{cadastroFuncionarioBean.pessoa.endereco}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarEnderecos}" />

                <p:outputLabel value="Numero" for="numero" />
                <p:autoComplete id="numero" size="6"
                    value="#{cadastroFuncionarioBean.pessoa.numero}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarNumeros}" />

                <p:outputLabel value="Complemento" for="complemento" />
                <p:autoComplete id="complemento" size="20"
                    value="#{cadastroFuncionarioBean.pessoa.complemento}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarComplementos}" />

                <p:outputLabel value="Bairro" for="bairro" />
                <p:autoComplete id="bairro" size="30"
                    value="#{cadastroFuncionarioBean.pessoa.bairro}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarBairros}" />

                <p:outputLabel value="Cidade" for="cidade" />
                <p:autoComplete id="cidade" size="30"
                    value="#{cadastroFuncionarioBean.pessoa.cidade}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarCidades}" />

                <p:outputLabel value="Estado" for="estado" />
                <p:autoComplete id="estado" size="2"
                    value="#{cadastroFuncionarioBean.pessoa.estado}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarEstados}" />

                <p:outputLabel value="Cep" for="cep" />
                <p:autoComplete id="cep" size="9"
                    value="#{cadastroFuncionarioBean.pessoa.cep}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarCeps}" />

            </p:panelGrid>

            <h3>Dados de Admissão</h3>

            <p:panelGrid columns="2">

                <p:outputLabel value="Cargo" for="cargo" />
                <p:autoComplete id="cargo" size="60"
                    value="#{cadastroFuncionarioBean.funcionario.cargo}"
                    completeMethod="#{cadastroFuncionarioBean.pesquisarCargos}" />

                <p:outputLabel value="Salário" />
                <p:inputText size="12"
                    value="#{cadastroFuncionarioBean.funcionario.salario}"
                    label="salario">
                    <f:convertNumber locale="pt_BR" maxFractionDigits="2"
                        minFractionDigits="2" />
                </p:inputText>

                <p:outputLabel value="Data de Admissão" for="dataAdmissao" />
                <p:calendar id="dataAdmissao" size="12" pattern="dd/MM/yyyy"
                    value="#{cadastroFuncionarioBean.funcionario.dataAdmissao}">
                    <p:ajax event="dateSelect" update="@this dataAdmissao"
                        process="@this dataAdmissao"
                        listener="#{cadastroFuncionarioBean.dataAdmissaoAlterada}" />
                </p:calendar>

            </p:panelGrid>

            <p:commandButton value="Salvar"
                action="#{cadastroFuncionarioBean.salvar}" icon="ui-icon-disk"
                update="@form" />

        </h:form>
    </ui:define>
</ui:composition>

Report screen for possible deletion or editing

<!DOCTYPE html>
<ui:composition template="/WEB-INF/template/Layout.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <f:metadata>
        <f:viewAction action="#{consultaFuncionariosBean.consultar}" />
    </f:metadata>
    <ui:define name="titulo">Consulta do RH</ui:define>
    <ui:define name="corpo">
        <h1>Consulta de Funcionarios</h1>
        <h:form id="frm">
            <p:messages showDetail="false" showSummary="true" autoUpdate="true" />
            <p:dataTable value="#{consultaFuncionariosBean.funcionarios}"
                var="funcionario" border="1" cellspacing="0" cellpadding="2"
                paginator="true" rows="5" paginatorPosition="bottom">
                <p:column headerText="Pessoa" sortBy="#{funcionario.pessoa.nome}">
                    <h:outputText value="#{funcionario.pessoa.nome}" />
                </p:column>
                <p:column headerText="Cargo" sortBy="#{funcionario.cargo}">
                    <h:outputText value="#{funcionario.cargo}" />
                </p:column>
                <p:column headerText="Sexo">
                    <h:outputText value="#{funcionario.sexo}" />
                </p:column>
                <p:column headerText="Salário" style="text-align: right"
                    sortBy="#{funcionario.salario}">
                    <h:outputText value="#{funcionario.salario}">
                        <f:convertNumber type="currency" locale="pt_BR" />
                    </h:outputText>
                </p:column>
                <p:column headerText="Data de Admissão" style="text-align: center"
                    sortBy="#{funcionario.dataAdmissao}">
                    <h:outputText value="#{funcionario.dataAdmissao}">
                        <f:convertDateTime pattern="dd/MM/yyyy"
                            timeZone="America/Sao_Paulo" />
                    </h:outputText>
                </p:column>
                <p:column headerText="Data de Demissão" style="text-align: center"
                    sortBy="#{funcionario.dataDemissao}">
                    <h:outputText value="#{funcionario.dataDemissao}">
                        <f:convertDateTime pattern="dd/MM/yyyy"
                            timeZone="America/Sao_Paulo" />
                    </h:outputText>
                </p:column>
                <p:column>
                    <p:button icon="ui-icon-pencil" title="Editar"
                        outcome="/CadastroFuncionario">
                        <f:param name="id" value="#{funcionario.id}" />
                    </p:button>
                    <p:commandButton icon="ui-icon-trash" title="Excluir"
                        process="@this" update="@form"
                        action="#{consultaFuncionariosBean.excluir}">
                        <f:setPropertyActionListener value="#{funcionario}"
                            target="#{consultaFuncionariosBean.funcionarioSelecionado}" />
                    </p:commandButton>
                </p:column>
            </p:dataTable>
        </h:form>
    </ui:define>
</ui:composition>

Personal class

package br.com.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "pessoa")
public class Pessoa implements Serializable {
    private static final long serialVersionUID = 1L;
    Long id;

    private String nome;
    private String endereco;
    private String numero;
    private String complemento;
    private String bairro;
    private String cidade;
    private String estado;
    private String cep;


    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @NotEmpty
    @Size(max = 100)
    @Column(length = 100, nullable = false)
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @NotEmpty
    @Size(max = 100)
    @Column(length = 100, nullable = false)
    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    @NotEmpty
    @Size(max = 6)
    @Column(length = 6, nullable = false)
    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }


    //@NotEmpty
    @Size(max = 50)
    @Column(length = 50, nullable = false)
    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    @NotEmpty
    @Size(max = 30)
    @Column(length = 30, nullable = false)
    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    @NotEmpty
    @Size(max = 30)
    @Column(length = 30, nullable = false)
    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    @NotEmpty
    @Size(max = 2)
    @Column(length = 2, nullable = false)
    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @NotEmpty
    @Size(max = 9)
    @Column(length = 9, nullable = false)
    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }


    @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;
        Pessoa other = (Pessoa) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }
}

working class

package br.com.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

import br.com.util.DecimalPositivo;

@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
    private static final long serialVersionUID = 1L;
    private Long id;

    private Pessoa pessoa;
    private String cpf;
    private String cargo;
    private BigDecimal salario;
    private TipoSexo sexo;
    private Date dataAdmissao;
    private Date dataDemissao;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @NotNull
    @OneToOne
    @JoinColumn(name="pessoa_id")
    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    @NotEmpty
    @Size(max = 14)
    @Column(length = 14, nullable = false)
    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    @NotEmpty
    @Size(max = 80)
    @Column(length = 80, nullable = false)
    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    //@NotNull
    //@DecimalMin("0")
    @DecimalPositivo
    @Column(precision = 10, scale = 2, nullable = false)
    public BigDecimal getSalario() {
        return salario;
    }

    public void setSalario(BigDecimal salario) {
        this.salario = salario;
    }

    @NotNull
    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    public TipoSexo getSexo() {
        return sexo;
    }

    public void setSexo(TipoSexo sexo) {
        this.sexo = sexo;
    }

    @NotNull
    @Temporal(TemporalType.DATE)
    @Column(name = "data_admissao", nullable = false)
    public Date getDataAdmissao() {
        return dataAdmissao;
    }

    public void setDataAdmissao(Date dataAdmissao) {
        this.dataAdmissao = dataAdmissao;
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "data_Demissao", nullable = true)
    public Date getDataDemissao() {
        return dataDemissao;
    }

    public void setDataDemissao(Date dataDemissao) {
        this.dataDemissao = dataDemissao;
    }


    @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;
        Funcionario other = (Funcionario) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }
}

class Employee registration

package br.com.model;

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

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.controller.CadastroFuncionarios;
import br.com.controller.CadastroPessoas;
import br.com.controller.NegocioException;
import br.com.repository.Funcionarios;
import br.com.repository.Pessoas;

@Named
@javax.faces.view.ViewScoped
public class CadastroFuncionarioBean implements Serializable {
    private static final long serialVersionUID = 1L;

    @Inject
    private CadastroFuncionarios cadastrofuncionario;

    @Inject
    private CadastroPessoas cadastropessoa;

    @Inject
    private Pessoas pessoas;

    @Inject
    private Funcionarios funcionarios;

    private Funcionario funcionario;

    private Pessoa pessoa;

    private List<Pessoa> todasPessoas;

    private List<Funcionario> todosFuncionarios;

    public void prepararCadastro() {
        this.todasPessoas = this.pessoas.todas();
        if (this.pessoa == null) {
            this.pessoa = new Pessoa();
        }

        this.todosFuncionarios = this.funcionarios.todos();
        if (this.funcionario == null) {
            this.funcionario = new Funcionario();

        }
    }

    public void dataAdmissaoAlterada(AjaxBehaviorEvent event) {
        if (this.funcionario.getDataAdmissao() == null) {
            this.funcionario.setDataDemissao(this.funcionario.getDataAdmissao());
        }
    }

    public void salvar() {
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            pessoa = this.cadastropessoa.salvar(this.pessoa);
            this.funcionario.setPessoa(pessoa);
            this.pessoa = new Pessoa();
            this.cadastrofuncionario.salvar(this.funcionario);
            this.funcionario = new Funcionario();
            context.addMessage(null, new FacesMessage("Funcionario salvo com sucesso!"));
        } catch (NegocioException e) {
            FacesMessage mensagem = new FacesMessage(e.getMessage());
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, mensagem);
        }
    }

    public List<String> pesquisarCargos(String cargos) {
        return this.funcionarios.cargosQueContem(cargos);
    }

    public List<String> pesquisarCpfs(String cpfs) {
        return this.funcionarios.cpfsQueContem(cpfs);
    }

    public List<String> pesquisarNomes(String nomes) {
        return this.pessoas.nomesQueContem(nomes);
    }

    public List<String> pesquisarEnderecos(String enderecos) {
        return this.pessoas.enderecosQueContem(enderecos);
    }

    public List<String> pesquisarNumeros(String numeros) {
        return this.pessoas.numerosQueContem(numeros);
    }

    public List<String> pesquisarComplementos(String complementos) {
        return this.pessoas.complementosQueContem(complementos);
    }

    public List<String> pesquisarBairros(String bairros) {
        return this.pessoas.bairrosQueContem(bairros);
    }

    public List<String> pesquisarCidades(String cidades) {
        return this.pessoas.cidadesQueContem(cidades);
    }

    public List<String> pesquisarEstados(String estados) {
        return this.pessoas.estadosQueContem(estados);
    }

    public List<String> pesquisarCeps(String ceps) {
        return this.pessoas.cepsQueContem(ceps);
    }


    public List<Pessoa> getTodasPessoas() {
        return this.todasPessoas;
    }

    public List<Funcionario> getTodosFuncionarios() {
        return this.todosFuncionarios;
    }

    public TipoSexo[] getTiposFuncionarios() {
        return TipoSexo.values();
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }


}

Query class Functionbean

package br.com.amarildo.model;

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

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.amarildo.controller.CadastroFuncionarios;
import br.com.amarildo.controller.CadastroPessoas;
import br.com.amarildo.controller.NegocioException;
import br.com.amarildo.repository.Funcionarios;
import br.com.amarildo.repository.Pessoas;

@Named
@javax.faces.view.ViewScoped
public class ConsultaFuncionariosBean implements Serializable {
    private static final long serialVersionUID = 1L;

    @Inject
    private Funcionarios funcionariosRepository;

    @Inject
    private Pessoas pessoasRepository;

    @Inject
    private CadastroFuncionarios cadastrofuncionario;

    @Inject
    private CadastroPessoas cadastropessoa;

    private List<Pessoa> pessoas;

    private Pessoa pessoaSelecionado;

    private List<Funcionario> funcionarios;

    private Funcionario funcionarioSelecionado;




    public void excluir() {
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            this.cadastrofuncionario.excluir(this.funcionarioSelecionado);
            this.cadastropessoa.excluir(this.pessoaSelecionado);
            this.consultar();
            context.addMessage(null, new FacesMessage("Funcionario excluído com sucesso!"));
        } catch (NegocioException e) {
            FacesMessage mensagem = new FacesMessage(e.getMessage());
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, mensagem);
        }
    }

    public void consultar() {
        this.funcionarios = funcionariosRepository.todos();
        this.pessoas = pessoasRepository.todas();
    }


    public List<Pessoa> getPessoas() {
        return pessoas;
    }

    public Pessoa getPessoaSelecionado() {
        return pessoaSelecionado;
    }

    public void setPessoaSelecionado(Pessoa pessoaSelecionado) {
        this.pessoaSelecionado = pessoaSelecionado;
    }

    public List<Funcionario> getFuncionarios() {
        return funcionarios;
    }

    public Funcionario getFuncionarioSelecionado() {
        return funcionarioSelecionado;
    }

    public void setFuncionarioSelecionado(Funcionario funcionarioSelecionado) {
        this.funcionarioSelecionado = funcionarioSelecionado;
    }




}

Well it’s there if anyone knows how to help me I’ll be very grateful.

  • You are passing only the id to the Bean. In this case your Registration Bean has to have a method to rescue the employee by id.

  • Thanks Jose, I’ll see if I find something in this sense, if you know something I can see to that respect I’m doing this program to be able to learn and I don’t have much practice. then anything that can show me the path of the stones I am grateful... more thank you for the attention and time.

1 answer

1

You will have to create a method in the Bean ConsultaFuncionariosBean only to rescue the Funcionario by id as:

No Bean

@PostConstruct
public void pesquisarFuncionario() {
    this.funcionario = this.funcionarios().pesquisarPorId(funcionario.getId());
}
  • vlw Jose I will try to implement here. thanks again

Browser other questions tagged

You are not signed in. Login or sign up in order to post.