1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro de conversão ao definir o valor '[Veterinario [matricula=200, crmv=5555555], Veterinario [matricula=201, crmv=542752]]' para 'null Converter'.

Olá,

Gente estou com o problema de conversão aparentemente a minha variável filtroCpf está vindo nula mas SOMENTE se eu colocar o componente do veterinário na tela. Me pergunto o por que..

package controle;

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

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

import modelo.dao.AnimalDAO;
import modelo.dao.ClienteDAO;
import modelo.dao.VeterinarioDAO;
import modelo.dominio.Agendamento;
import modelo.dominio.Animal;
import modelo.dominio.Atender;
import modelo.dominio.Cliente;
import modelo.dominio.Veterinario;

@ManagedBean(name = "atenderMB")
@ViewScoped
public class AtenderMB implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String idParam;
    private Veterinario vet = new Veterinario();

    private List<Veterinario> vets = null;
    private Animal ani;
    private AnimalDAO anDao = new AnimalDAO();
    private List<Animal> animais = null;
    private String mensagemDeErro;
    private Agendamento agend = new Agendamento();
    private List<Atender> atendes = null; 
    private Cliente cli;

    private String filtroCpf;
    private String nomeAni =null;


    public String getFiltroCpf() { 
        return filtroCpf;
    }

    public void setFiltroCpf(String filtroCpf) {
        this.filtroCpf = filtroCpf;
    }

    public Cliente procuraCliente() {
        return cli;
    }

    public Cliente getCli() {
        if (this.cli == null) {    
        ClienteDAO cliDao = new ClienteDAO();    
        cli = cliDao.lerPorCpf(filtroCpf);
        }

        return cli;

    }

    public void setCli(Cliente cli) {
        this.cli = cli;
    }


    public String getIdParam() {
        return idParam;
    }

    public void setIdParam(String idParam) {
        this.idParam = idParam;
    }

    public Veterinario getVet() {
        return vet;
    }

    public void setVet(Veterinario vet) {
        this.vet = vet;
    }



    public List<Veterinario> getVets() {
        if (this.vets == null) {
        VeterinarioDAO vetDao = new VeterinarioDAO();
        vets = vetDao.lerTodos();
        }
        return vets; 

    }


    public void setVets(List<Veterinario> vets) {
        this.vets = vets;
    }

    public Animal getAni() {
        return ani;
    }

    public void setAni(Animal ani) {
        this.ani = ani;
    }

    public List<Animal> getAnimais() {

        if(cli != null) {
        animais = anDao.consultaAnimais(this.cli.getId());
        return animais;
        }else
            return null;

    }




    public String getNomeAni() {
        return nomeAni;
    }

    public void setNomeAni(String nomeAni) {
        this.nomeAni = nomeAni;
    }

    public void setAnimais(List<Animal> animais) {
        this.animais = animais;
    }

    public String getMensagemDeErro() {
        return mensagemDeErro;
    }

    public void setMensagemDeErro(String mensagemDeErro) {
        this.mensagemDeErro = mensagemDeErro;
    }

    public Agendamento getAgend() {
        return agend;
    }

    public void setAgend(Agendamento agend) {
        this.agend = agend;
    }

    public List<Atender> getAtendes() {
        return atendes;
    }

    public void setAtendes(List<Atender> atendes) {
        this.atendes = atendes;
    }

}
<h:form>
            <p:fieldset legend="Agendamento do cliente"
                style="margin-bottom:20px">
                <h:panelGrid columns="4" cellpadding="5">

                    <p:outputLabel for="cpf" value="#{msgs.campoCpfdopro}" />
                    <p:inputMask mask="999.999.999-99" id="cpf"
                        value="#{atenderMB.filtroCpf}" required="true" />
                    <p:commandButton id="procurar" value="Procurar" ajax="false"
                        action="#{atenderMB.procuraCliente}">
                    </p:commandButton>
                </h:panelGrid>
                <h:panelGrid columns="2" cellpadding="5">
                    <p:outputLabel for="nome" value="#{msgs.campoNome}" />
                    <h:outputText id="nome" value="#{atenderMB.cli.nome}"></h:outputText>

                    <p:outputLabel for="sobrenome" value="#{msgs.campoSobrenome}" />
                    <h:outputText id="sobrenome" value="#{atenderMB.cli.sobrenome}"></h:outputText>

                    <p:outputLabel for="email" value="#{msgs.campoEmail}:" />
                    <h:outputText id="email" value="#{atenderMB.cli.email}" />


                    <p:outputLabel for="telefone" value="#{msgs.campoTelefone}:" />
                    <h:outputText id="telefone" value="#{atenderMB.cli.telefone}" />

                    <p:outputLabel for="animal" value="#{msgs.campoAnimal}:" />
                    <h:selectOneMenu id="animal" value="#{atenderMB.ani}"
                        required="false">
                        <f:selectItems value="#{atenderMB.animais}" var="ani"
                            itemValue="#{atenderMB.ani.id}" itemLabel="#{ani.nome}" />
                    </h:selectOneMenu>


                </h:panelGrid>

                <h:panelGrid columns="2" cellpadding="5">
                    <p:outputLabel for="veterinario" value="#{msgs.campoVet}:" />
                    <h:selectOneMenu id="veterinario" value="#{atenderMB.vet}"
                        required="false">
                        <f:selectItems value="#{atenderMB.vets}" var="vet"
                            itemValue="#{atenderMB.vets}" itemLabel="#{vet.nome}" converter="generic" />
                    </h:selectOneMenu>
                </h:panelGrid>
            </p:fieldset>
        </h:form>
package conversores;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import modelo.dao.VeterinarioDAO;
import modelo.dominio.Veterinario;

@FacesConverter(forClass=Veterinario.class)
public class VeterinarioConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        Integer matricula = null;

        try {
            matricula = Integer.parseInt(value);

            VeterinarioDAO dao = new VeterinarioDAO();
            Veterinario vet = dao.lerPorId(matricula);

            return vet;

        } catch (NumberFormatException e) {
            matricula = null;
        }

        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {

        if (value instanceof Veterinario)
        {
            Veterinario vet = (Veterinario) value;
            // retorna 
            return vet.getMatricula().toString();
        }

        return null;
    }

}

A lógica é que a cada vez que eu procurar o cliente, ele preencha a tela e os animais q ele possui e que eu possa escolher o veterinário que irá atende-lo. Se alguem puder me ajudar..

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate jsf ou faça a sua própria pergunta.