SelectOneMenu Doido!

4 respostas
M

E aí galera.

Estou quebrando a cabeça há alguns dias e não consigo resolver esse problema. O pior de tudo é que não tem como rastrear o erro. Na minha pagina eu tenho 4 selectOneMenu o primeiro tah de boa, eu selecione ele, aí ele filtra o segundo, mas quando eu seleciono o segundo dá um erro, tipo de um erro de conversor, nos logs do glassfish não aparece nada, só aquele popup do jsf

<h:outputLabel value="Empresa"/>
                    <p:selectOneMenu value="#{rContaFluxoMb.model.empr}" valueChangeListener="#{versaoContabMb.seleciona}" onchange="submit()" immediate="true">
                        <!--                        <p:ajax event="change" update="versao"/>-->
                        <f:selectItems value="#{emprUsuMb.selectItem}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
                    </p:selectOneMenu>
                    <h:outputLabel value="Versão Contabil"/>
                    <p:selectOneMenu value="#{rContaFluxoMb.model.versaocontab}" id="versao" valueChangeListener="#{contaFluxoMb.seleciona}" onchange="submit()" immediate="true" >
                        <!--                        <p:ajax event="change" update="conta"/>-->
                        <f:selectItems value="#{versaoContabMb.listaEmpr}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
                    </p:selectOneMenu>

                    <h:outputLabel value="Conta do Fluxo"/>
                    <p:selectOneMenu value="#{rContaFluxoMb.model.contafluxo}" id="conta" immediate="true">
                        <f:selectItems value="#{contaFluxoMb.listaVersao}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
                    </p:selectOneMenu>
                    <h:outputLabel value="Natureza"/>
                    <p:selectOneMenu value="#{rContaFluxoMb.model.natureza}" id="natureza">
                        <f:selectItems value="#{naturezaOpFiscalMb.selectItem}" var="item" itemValue="#{item.value}" itemLabel="#{item.value}"/>
                    </p:selectOneMenu>
                    <h:commandButton actionListener="#{rContaFluxoMb.gravar()}" value="Gravar" update="growl,tabela"/>

Esse é a parte do meu codigo que gera as listas dos selectItems:

Esse é do primeiro selectOneMenu:

@ManagedBean
@SessionScoped
public class EmprUsuMb implements Serializable{

    @EJB
    private EmprUsuFacade dao;
    private EmprUsu model = new EmprUsu();

    public List<SelectItem> getSelectItem() {
        List<SelectItem> listaItem = new ArrayList<SelectItem>();
        List<EmprUsu> lista = dao.findAll();
        listaItem.add(new SelectItem(null, ""));
        for (EmprUsu c : lista) {
            listaItem.add(new SelectItem(c, c.toString()));
        }
        return listaItem;
    }

    @FacesConverter(forClass = EmprUsu.class)
    public static class ConverterEmprUsu implements Converter {

        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
            if (value.isEmpty() || value != null) {
                EmprUsuMb emprUsu = (EmprUsuMb)context.getApplication().getELResolver().getValue(context.getELContext(), null, "emprUsuMb");
                return emprUsu.dao.find(Long.parseLong(value));
                
            }
            return null;
        }

        @Override
        public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
            if (value != null && value instanceof EmprUsu) {
                return ((EmprUsu) value).getEmprusuId().toString();
            }
            return null;
        }
    }
}

Esse do segundo onde está dando o erro:

@ManagedBean
@SessionScoped
public class VersaoContabMb implements Serializable {
    
    @EJB
    private VersaoContabFacade dao;
    
    private VersaoContab model = new VersaoContab();
    
    private EmprUsu idEmpresa;
    
    /** Creates a new instance of VersaoContabMb */
    public VersaoContabMb() {
    }
    
    public List<SelectItem> getLista(){
        List<SelectItem> listaItem = new ArrayList<SelectItem>();
        List<VersaoContab> lista = dao.findAll();
        listaItem.add(new SelectItem(null, "Selecione"));
        for (VersaoContab c : lista) {
            listaItem.add(new SelectItem(c, c.toString()));
        }
        return listaItem;
    }

    /**
     * @return the model
     */
    public VersaoContab getModel() {
        return model;
    }

    /**
     * @param model the model to set
     */
    public void setModel(VersaoContab model) {
        this.model = model;
    }
    
    public List<SelectItem> getListaEmpr(){
        List<SelectItem> listaItem = new ArrayList<SelectItem>();
        List<VersaoContab> lista = dao.listaByEmpr(getIdEmpresa());
//        listaItem.add(new SelectItem(null, "Selecione"));
        for (VersaoContab c : lista) {
            listaItem.add(new SelectItem(c, c.toString()));
        }
        return listaItem;
    }

    /**
     * @return the idEmpresa
     */
    public EmprUsu getIdEmpresa() {
        return idEmpresa;
    }

    /**
     * @param idEmpresa the idEmpresa to set
     */
    public void setIdEmpresa(EmprUsu idEmpresa) {
        this.idEmpresa = idEmpresa;
    }
    
    public void seleciona(ValueChangeEvent event){
        if(event.getNewValue() != null){
            System.out.println(event);
            idEmpresa = (EmprUsu) event.getNewValue();
            System.out.println(idEmpresa);
            //FacesContext.getCurrentInstance().renderResponse();
        }
    }
    
    
    @FacesConverter(forClass = VersaoContab.class)
    public static class ConverterEmprUsu implements Converter {

        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
            if (value.isEmpty() || value != null) {
                VersaoContabMb versaoContab = (VersaoContabMb)context.getApplication().getELResolver().getValue(context.getELContext(), null, "versaoContabMb");
                return versaoContab.dao.find(Long.parseLong(value));
                
            }
            return null;
        }
        
        

        @Override
        public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
            if (value != null && value instanceof VersaoContab) {
                return ((VersaoContab) value).getVerscontabId().toString();
            }
            return null;
        }
    }
   
    
}

Interessante que os conversores são iguais, os metodos que geram os selectItems são iguais, mas dá o erro que eu postei aí

4 Respostas

R

Meu caro o erro é bem claro,vc tem um campo que aceita apenas números e tá tentando passar outro tipo de caractere.

M

Ahhh e olha como sai o codigo fonte da pagina:

Empresa
br.queiroz.model.EmprUsu[ emprusuId=133 ]br.queiroz.model.EmprUsu[ emprusuId=134 ]br.queiroz.model.EmprUsu[ emprusuId=135 ]br.queiroz.model.EmprUsu[ emprusuId=136 ]br.queiroz.model.EmprUsu[ emprusuId=137 ]br.queiroz.model.EmprUsu[ emprusuId=138 ]br.queiroz.model.EmprUsu[ emprusuId=139 ]br.queiroz.model.EmprUsu[ emprusuId=102 ]br.queiroz.model.EmprUsu[ emprusuId=107 ]br.queiroz.model.EmprUsu[ emprusuId=108 ]br.queiroz.model.EmprUsu[ emprusuId=109 ]br.queiroz.model.EmprUsu[ emprusuId=110 ]br.queiroz.model.EmprUsu[ emprusuId=111 ]br.queiroz.model.EmprUsu[ emprusuId=112 ]br.queiroz.model.EmprUsu[ emprusuId=113 ]br.queiroz.model.EmprUsu[ emprusuId=114 ]br.queiroz.model.EmprUsu[ emprusuId=115 ]br.queiroz.model.EmprUsu[ emprusuId=116 ]br.queiroz.model.EmprUsu[ emprusuId=117 ]br.queiroz.model.EmprUsu[ emprusuId=118 ]br.queiroz.model.EmprUsu[ emprusuId=119 ]br.queiroz.model.EmprUsu[ emprusuId=120 ]br.queiroz.model.EmprUsu[ emprusuId=121 ]br.queiroz.model.EmprUsu[ emprusuId=122 ]br.queiroz.model.EmprUsu[ emprusuId=123 ]br.queiroz.model.EmprUsu[ emprusuId=124 ]br.queiroz.model.EmprUsu[ emprusuId=125 ]br.queiroz.model.EmprUsu[ emprusuId=126 ]br.queiroz.model.EmprUsu[ emprusuId=127 ]br.queiroz.model.EmprUsu[ emprusuId=104 ]br.queiroz.model.EmprUsu[ emprusuId=105 ]br.queiroz.model.EmprUsu[ emprusuId=106 ]br.queiroz.model.EmprUsu[ emprusuId=128 ]br.queiroz.model.EmprUsu[ emprusuId=1 ]br.queiroz.model.EmprUsu[ emprusuId=2 ]br.queiroz.model.EmprUsu[ emprusuId=129 ]br.queiroz.model.EmprUsu[ emprusuId=130 ]br.queiroz.model.EmprUsu[ emprusuId=131 ]br.queiroz.model.EmprUsu[ emprusuId=132 ]br.queiroz.model.EmprUsu[ emprusuId=103 ]br.queiroz.model.EmprUsu[ emprusuId=140 ]br.queiroz.model.EmprUsu[ emprusuId=147 ]
 
  •  
  • br.queiroz.model.EmprUsu[ emprusuId=133 ]
  • br.queiroz.model.EmprUsu[ emprusuId=134 ]
  • br.queiroz.model.EmprUsu[ emprusuId=135 ]
  • br.queiroz.model.EmprUsu[ emprusuId=136 ]
  • br.queiroz.model.EmprUsu[ emprusuId=137 ]
  • br.queiroz.model.EmprUsu[ emprusuId=138 ]
  • br.queiroz.model.EmprUsu[ emprusuId=139 ]
  • br.queiroz.model.EmprUsu[ emprusuId=102 ]
  • br.queiroz.model.EmprUsu[ emprusuId=107 ]
  • br.queiroz.model.EmprUsu[ emprusuId=108 ]
  • br.queiroz.model.EmprUsu[ emprusuId=109 ]
  • br.queiroz.model.EmprUsu[ emprusuId=110 ]
  • br.queiroz.model.EmprUsu[ emprusuId=111 ]
  • br.queiroz.model.EmprUsu[ emprusuId=112 ]
  • br.queiroz.model.EmprUsu[ emprusuId=113 ]
  • br.queiroz.model.EmprUsu[ emprusuId=114 ]
  • br.queiroz.model.EmprUsu[ emprusuId=115 ]
  • br.queiroz.model.EmprUsu[ emprusuId=116 ]
  • br.queiroz.model.EmprUsu[ emprusuId=117 ]
  • br.queiroz.model.EmprUsu[ emprusuId=118 ]
  • br.queiroz.model.EmprUsu[ emprusuId=119 ]
  • br.queiroz.model.EmprUsu[ emprusuId=120 ]
  • br.queiroz.model.EmprUsu[ emprusuId=121 ]
  • br.queiroz.model.EmprUsu[ emprusuId=122 ]
  • br.queiroz.model.EmprUsu[ emprusuId=123 ]
  • br.queiroz.model.EmprUsu[ emprusuId=124 ]
  • br.queiroz.model.EmprUsu[ emprusuId=125 ]
  • br.queiroz.model.EmprUsu[ emprusuId=126 ]
  • br.queiroz.model.EmprUsu[ emprusuId=127 ]
  • br.queiroz.model.EmprUsu[ emprusuId=104 ]
  • br.queiroz.model.EmprUsu[ emprusuId=105 ]
  • br.queiroz.model.EmprUsu[ emprusuId=106 ]
  • br.queiroz.model.EmprUsu[ emprusuId=128 ]
  • br.queiroz.model.EmprUsu[ emprusuId=1 ]
  • br.queiroz.model.EmprUsu[ emprusuId=2 ]
  • br.queiroz.model.EmprUsu[ emprusuId=129 ]
  • br.queiroz.model.EmprUsu[ emprusuId=130 ]
  • br.queiroz.model.EmprUsu[ emprusuId=131 ]
  • br.queiroz.model.EmprUsu[ emprusuId=132 ]
  • br.queiroz.model.EmprUsu[ emprusuId=103 ]
  • br.queiroz.model.EmprUsu[ emprusuId=140 ]
  • br.queiroz.model.EmprUsu[ emprusuId=147 ]
[b]Versão Contabil[/b]
<[b]option value="br.queiroz.model.VersaoContab[ verscontabId=2 ]"[/b]>br.queiroz.model.VersaoContab[ verscontabId=2 ]<[b]option value="br.queiroz.model.VersaoContab[ verscontabId=142 ]"[/b]>br.queiroz.model.VersaoContab[ verscontabId=142 ]br.queiroz.model.VersaoContab[ verscontabId=161 ]br.queiroz.model.VersaoContab[ verscontabId=4 ]br.queiroz.model.VersaoContab[ verscontabId=144 ]br.queiroz.model.VersaoContab[ verscontabId=6 ]br.queiroz.model.VersaoContab[ verscontabId=148 ]br.queiroz.model.VersaoContab[ verscontabId=147 ]br.queiroz.model.VersaoContab[ verscontabId=160 ]
 
  • br.queiroz.model.VersaoContab[ verscontabId=2 ]
  • br.queiroz.model.VersaoContab[ verscontabId=142 ]
  • br.queiroz.model.VersaoContab[ verscontabId=161 ]
  • br.queiroz.model.VersaoContab[ verscontabId=4 ]
  • br.queiroz.model.VersaoContab[ verscontabId=144 ]
  • br.queiroz.model.VersaoContab[ verscontabId=6 ]
  • br.queiroz.model.VersaoContab[ verscontabId=148 ]
  • br.queiroz.model.VersaoContab[ verscontabId=147 ]
  • br.queiroz.model.VersaoContab[ verscontabId=160 ]
Conta do Fluxo
Selecione
 
  • Selecione
Natureza
br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=41 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=42 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=43 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=44 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=45 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=46 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=47 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=48 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=49 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=50 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=51 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=52 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=53 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=54 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=55 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=56 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=57 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=58 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=59 ]br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=60 ]
 
  •  
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=41 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=42 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=43 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=44 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=45 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=46 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=47 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=48 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=49 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=50 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=51 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=52 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=53 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=54 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=55 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=56 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=57 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=58 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=59 ]
  • br.queiroz.model.NaturezaOpfiscal[ natopfiscalId=60 ]

O meu selectOneMenu esta trazendo o metodo toString do objeto em vez do valor. Mas o metodo tah igualzinho nos dois selectOneMenu.

M

Então cara… Mas os metódos são iguais, é a mesma estrutura para os dois manage bean, só que como eu postei o meu codigo fonte da pagina, no primeiro selectOneMenu ele exibe o id do objeto, o segundo exibe o toString().

M

Eu reiniciei o netbeans e agora aparece o id como pode ser visto no codigo fonte da pagina:

br.queiroz.model.VersaoContab[ verscontabId=2 ]br.queiroz.model.VersaoContab[ verscontabId=142 ]

O erro também mudou agora é:

Criado 2 de fevereiro de 2012
Ultima resposta 2 de fev. de 2012
Respostas 4
Participantes 2