Erro de conversão ao definir o valor ‘3’ para ‘null Converter’.
Erro de conversão ao definir o valor ‘3’ para ‘null Converter’.
pessoal estou tomando este erro e nao consigo saber o que poder ser… sera que alguem poderia me ajudar.
pagina xhtml
<p:selectOneMenuid="cliente"value="#{clienteBean.cliente.id}"><f:selectItemitemLabel="Selecione o Cliente"itemValue=""/><f:selectItemsvalue="#{clienteBean.lcliente}"var="cliente"itemLabel="#{cliente.nome}"itemValue="#{cliente.id}"/><p:ajaxupdate="custo"listener="#{clienteBean.montaComboCentroCusto}"/></p:selectOneMenu><h:outputLabelvalue="Centro de Custo:"/><p:selectOneMenuid="custo"value="#{clienteBean.lcusto}"><f:selectItemitemLabel="Selecione o Centro de Custo"itemValue=""/><f:selectItemsvalue="#{clienteBean.lcusto}"var="custo"itemLabel="#{custo.vcdescriacao_cc}"itemValue="#{custo.nmcod_cc}"/><h:panelGroup><f:facetname="start"><h:graphicImagevalue="/img/loading.gif"/></f:facet></h:panelGroup></p:selectOneMenu>
Esse erro acontece quando você altera o primeiro ou o segundo selectOne?
oliversistemas
Vê se isso já te ajuda:
testeCli.xhtml
<h:formid="formCli"prependId="false">Cliente:<p:selectOneMenuid="comboCliente"value="#{clienteBean.cliente}"><f:selectItemitemLabel="Selecione o Cliente"noSelectionOption="false"/><f:selectItemsvalue="#{clienteBean.lcliente}"var="cli"itemLabel="#{cli.nome}"itemValue="#{cli}"/><p:ajaxevent="change"update="formCli"immediate="true"process="@this"listener="#{clienteBean.montaComboCentroCusto}"/></p:selectOneMenu><br/>CentrodeCusto:<p:selectOneMenuid="comboCusto"value="#{clienteBean.custo}"><f:selectItemitemLabel="Selecione o Centro de Custo"noSelectionOption="false"/><f:selectItemsvalue="#{clienteBean.lcusto}"var="c"itemLabel="#{c.vcdescriacao_cc}"itemValue="#{c}"/></p:selectOneMenu></h:form>
ClienteBean.java
//imports omitidos@ManagedBean@SessionScopedpublicclassClienteBean{privateClientecliente=newCliente();privateCustocusto=newCusto();privateList<Cliente>lcliente=newArrayList<Cliente>();privateList<Custo>lcusto=newArrayList<Custo>();publicClienteBean(){Clientec1=newCliente();Clientec2=newCliente();c1.setId(1);c1.setNome("Nome Cliente 1");c2.setId(2);c2.setNome("Nome Cliente 2");lcliente.add(c1);lcliente.add(c2);}publicStringmontaComboCentroCusto(){System.out.println("montaComboCentroCusto");lcusto=newArrayList<Custo>();Custocusto1=newCusto();custo1.setNmcod_cc(12.20);custo1.setVcdescriacao_cc("Fechar conta");Custocusto2=newCusto();custo2.setNmcod_cc(33.50);custo2.setVcdescriacao_cc("Juros para conta");lcusto.add(custo1);lcusto.add(custo2);return"";}// gets e sets omitidos mas DEVEM ser colocados
Veja aí e já dá um toque. Detalhe: usei primefaces 3.1.1
D
dark_neo
oliversistemas, tentei o que vc falou mais nao rolou continua dando o mesmo erro… so um deltalhe onde vc passa o objeto no item value eu passo o id, quando passei o objeto o segundo dropdwn nao funcionou, e dubugando reparei que ele mandou o objeto mesmo mesmo eu recuperando com cliente.getId();
jake frog, o problema ocorre quando eu clico no bt salvar acredito que seja no segundo menu ja que ele é preenchido com o id do primeiro.
obrigado pela ajuda pessoal!!!
oliversistemas
O problema pode estar no seu ClienteBean.java
Posta ele (completo, se puder) pra gente dar uma força.
D
dark_neo
oliver segue o manager bean…
packagebr.com.agm.manager;importjava.io.Serializable;importjava.util.List;importjavax.annotation.PostConstruct;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.ViewScoped;importcom.sun.faces.facelets.util.Path;importbr.com.agm.bean.CentroCusto;importbr.com.agm.bean.Cliente;importbr.com.agm.bean.Combo;importbr.com.agm.bean.Documento;importbr.com.agm.bean.Indexador;importbr.com.agm.business.CentroCustoBusiness;importbr.com.agm.business.ClienteBusiness;importbr.com.agm.business.DocumentoBusiness;importbr.com.agm.business.IndexacaoBusiness;@ManagedBean(name="clienteBean")@ViewScopedpublicclassClienteBeanimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateClientecliente;privateDocumentodocumento;privateCentroCustocusto;privateIndexadorindex;privateCombocombo;privatebooleanispainel;privateList<Indexador>indexList;privateList<Combo>lcombo;privateList<CentroCusto>lcusto;privateList<Cliente>lcliente;privateList<Indexador>lindex;privateList<Documento>ldoc;/** * Metodo que preenche o dropdown com * todos os clientes cadastrados. */@PostConstructpublicvoidmontaComboCliente(){try{cliente=newCliente();ClienteBusinessclienteBusiness=ClienteBusiness.getInstance();lcliente=clienteBusiness.montaCombo();System.out.println(Path.class.getClassLoader().getResource(".").getFile());}catch(Exceptione){System.out.println();}}/** * Metodo que preenche o componte de DropDown, * com os centro de custos */publicvoidmontaComboCentroCusto(){try{custo=newCentroCusto();CentroCustoBusinesscentroCustoBusiness=CentroCustoBusiness.getInstance();lcusto=centroCustoBusiness.montaCombo(cliente);}catch(Exceptione){System.out.println(e.getMessage());}}/** * */publicvoidrenderizaCamposBusca(){IndexacaoBusinessindexBusiness=IndexacaoBusiness.getInstance();try{lindex=indexBusiness.montaCampoIndex(custo,cliente);ispainel=true;}catch(Exceptione){System.out.println("metodo Renderiza: "+e.getMessage());}}publicstaticvoidmain(Stringargs[]){Documentodocumento=newDocumento();documento.setNome("200145_0003");documento.setCaminho("//teste//img");Clientecliente=newCliente();cliente.setId("4");try{DocumentoBusinessdocumentoBusiness=DocumentoBusiness.getInstance();documento=documentoBusiness.explodeString(documento);documentoBusiness.salvarDocumento(documento,cliente);documentoBusiness.moveApaga(documento,cliente);}catch(Exceptione){System.out.println(e.getMessage());}}publicStringsalvarDocumento(){try{Clientecliente=newCliente();cliente.setNome("teste");DocumentoBusinessdocumentoBusiness=DocumentoBusiness.getInstance();documentoBusiness.moveApaga(documento,cliente);}catch(Exceptione){System.out.println("erro ao salvar o documento"+e.getMessage());}return"/digitaliza?faces-redirect=true";}/** Metodos Get e Set padrão do JSF*/publicClientegetCliente(){returncliente;}publicvoidsetCliente(Clientecliente){this.cliente=cliente;}publicList<Cliente>getLcliente(){returnlcliente;}publicvoidsetLcliente(List<Cliente>lcliente){this.lcliente=lcliente;}publicCentroCustogetCusto(){returncusto;}publicvoidsetCusto(CentroCustocusto){this.custo=custo;}publicList<CentroCusto>getLcusto(){returnlcusto;}publicvoidsetLcusto(List<CentroCusto>lcusto){this.lcusto=lcusto;}publicIndexadorgetIndex(){returnindex;}publicvoidsetIndex(Indexadorindex){this.index=index;}publicList<Indexador>getLindex(){returnlindex;}publicvoidsetLindex(List<Indexador>lindex){this.lindex=lindex;}publicList<Documento>getLdoc(){returnldoc;}publicvoidsetLdoc(List<Documento>ldoc){this.ldoc=ldoc;}publicDocumentogetDocumento(){returndocumento;}publicvoidsetDocumento(Documentodocumento){this.documento=documento;}publicCombogetCombo(){returncombo;}publicvoidsetCombo(Combocombo){this.combo=combo;}publicList<Indexador>getIndexList(){returnindexList;}publicvoidsetIndexList(List<Indexador>indexList){this.indexList=indexList;}publicList<Combo>getLcombo(){returnlcombo;}publicvoidsetLcombo(List<Combo>lcombo){this.lcombo=lcombo;}publicbooleanisIspainel(){returnispainel;}publicvoidsetIspainel(booleanispainel){this.ispainel=ispainel;}}
abç
Hebert_Coelho
O seu segundo select aponta para uma classe.
Olha o value apontando para o lcusto (que é uma classe). Ou você aponta para algum int/string na classe MB ou você cria um Converter.
jakefrog desculpe cara mais sou novo nessa parada de JSF, eu nao entendi o que vc quiz dizer poderia ser mais especifico…
obrigado
abç!
Hebert_Coelho
dark neo:
jakefrog desculpe cara mais sou novo nessa parada de JSF, eu nao entendi o que vc quiz dizer poderia ser mais especifico…
obrigado
abç!
Quando você faz um selectOne apontando (value=“meuMB.nome”) para um int/string ele funfa numa boa.
Caso você aponte o selectOne (value=“meuMB.pessoa”) para uma classe você precisa de um converter. o link q eu postei ensina a fazer um converter para jsf. [=
D
dark_neo
humm entendi… mais no caso eu estou apontando pra um clienteBean.cliente.id, pelo o que entendo aqui estou pegando o id do cliente tanto que a outra selectonemenu lista os centros de custo desse cliente corretamente, o problema é quando eu vou pra segunda e seleciono o centro de custo e clico em buscar… ai tomo aquele erro do converter null… teria como me dar uma força nisso??