@Entity@Table(name="pj")publicclassEmpresaimplementsSerializable{privatestaticfinallongserialVersionUID=-612043523887259306L;@Id@Column(name="id_pj")privateLongidEmpresa;@Column(name="razaosocial")privateStringrazaoSocial;@Column(name="nomefantasia")privateStringnomeFantasia;@Column(name="cnpj")privateStringcnpj;//get's and seter's}@Entity@Table(schema="colocation",name="usuario")publicclassUsuarioimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id_usuario")privateLongidUsuario;@OneToOne(cascade={CascadeType.ALL})@JoinColumn(name="id_empresa")privateEmpresaempresa;//get's and seter's}@ManagedBean(name="usuarioBean")@SessionScopedpublicclassUsuarioBean{privateUsuariousuario;//get's and seter'spublicList<Empresa>getEmpresas(){EmpresaFacadeempresaService=newEmpresaFacade();try{returnempresaService.list((long)-1,"razaoSocial",1,10);}catch(DAOExceptione){e.printStackTrace();}returnnewArrayList<Empresa>();}}
Bom, o erro ocorre na fase de “validação”. no momento que "submeto o form.
o seguinte a mensagem é exibida: Erro de conversão ao definir o valor ‘54.385.620/0002-04’ para ‘null Converter’.
Cara, em JSF 1.2, quando vou popular um combo, crio um método que retorna uma lista de SelectItems.
Não se se o erro é esse, mas tente trocar a assinatura do seu método para algo mais ou menos assim:
acredito que essa validação está “falhando” no momento de fazer a ligação o managedbean.
o erro apresentado foi o mesmo!!!
Erro de conversão ao definir o valor ‘61.486.650/0001-83’ para ‘null Converter’.
renato.dosantos
Seu erro é esse:
value="#{usuarioBean.usuario.empresa}"
Sua variavel usuario não esta estaciada. Logo quando vc referencia com .empresa ele tenta acessa uma area que não exite. recomento vc pegar o id da empresa e inserir no atributo da classe e depois fazer um busca pela empresa no banco e só depois atribuir a empresa a usuario.empresa.
Acredito que o problema é ligar o valor selecionado do combobox com o atributo usuario.empresa
Richard_Mendes_Madur
Vi que a sua classe Usuario não instancia um objeto empresa…
Por acaso não seria necessário instanciar também a variável empresa, dentro de usuário?
robinsonbsilva
Então, até instanciando especificamente a classe Empresa.
@Entity@Table(schema="colocation",name="usuario")publicclassUsuarioimplementsSerializable{privatestaticfinallongserialVersionUID=330362572776429712L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id_usuario")privateLongidUsuario;@OneToOne(cascade={CascadeType.ALL})@JoinColumn(name="id_empresa")privateEmpresaempresa=newEmpresa();@Column(name="nome")privateStringnome;@Column(name="email")privateStringemail;@Column(name="senha")privateStringsenha;@Column(name="excluido")privateintexcluido;//getter's and setter's}
Não está rolando mesmo…
ricardo13
olá,
Bom, eu acredito que seja esse o seu problema.
Nakele código apresentado vc inseriu a seguinte linha
SelectItem s = new SelectItem(e, e.getRazaoSocial());
Percebe-se que o primeiro parâmetro é um objeto. Para isso, vc precisará construir uma classe que implementa Converter e implementar os métodos getAsObject() e getAsString().
Ricardo
robinsonbsilva
Fala Ricardo,
Então, implementei um Converter e o mesmo erro ocorre. O pior é que o converter “retorna” o objeto corretamente.
@ManagedBean(name="usuarioBean")@SessionScopedpublicclassUsuarioBean{privateUsuariousuario;privateList<Empresa>empresas;publicUsuarioBean(){}/******************************************//******************************************//******************************************/publicStringsave(){try{UsuarioFacadeusuarioService=newUsuarioFacade();usuarioService.save(getUsuario());}catch(DAOExceptione){e.printStackTrace();return"erro";}returnlist();}publicStringdelete(){try{UsuarioFacadeusuarioService=newUsuarioFacade();usuarioService.delete(getUsuario());}catch(DAOExceptione){e.printStackTrace();}returnlist();}publicStringlist(){return"/pages/usuario/show.jsf";}publicStringprepareAdd(){setUsuario(newUsuario());usuario.setEmpresa(FacesUtil.getEmpresa());return"/pages/usuario/create.jsf";}publicStringprepareEdit(){return"/pages/usuario/create.jsf";}publicList<Usuario>getListUsuarios(){UsuarioFacadeusuarioService=newUsuarioFacade();try{returnusuarioService.list(-1l,"nome",1,10);}catch(DAOExceptione){e.printStackTrace();}returnnewArrayList<Usuario>();}/******************************************//*************GET AND SETTERS**************//******************************************/publicList<Empresa>getEmpresas(){EmpresaFacadeempresaService=newEmpresaFacade();try{returnempresaService.list((long)-1,"razaoSocial",1,10);}catch(DAOExceptione){e.printStackTrace();}returnnewArrayList<Empresa>();}publicvoidsetEmpresas(List<Empresa>empresas){this.empresas=empresas;}publicUsuariogetUsuario(){returnusuario;}publicvoidsetUsuario(Usuariousuario){this.usuario=usuario;}publicStringgetUserLogged(){if(FacesUtil.getLoggedUser()==null)return"";returnFacesUtil.getLoggedUser().getNome();}publicStringgetEmpresaLogged(){if(FacesUtil.getLoggedUser()==null)return"";returnFacesUtil.getEmpresa().getRazaoSocial();}}[code]
E outra coisa, eu faria usando a classe SelectItem.
Dá uma olhada aki depois.
Ricardo
robinsonbsilva
da a mesma coisa!
está complicado! Na versão anterior JSF 1.x rolava dessa forma sem falhas, nem converter eu usava!
agora na versão 2, está ocorrendo esse erro no binding.
R
rjbcordeiro
[quote=robinsonbsilva]Senhores(ritas),
Possuo um combobox que é populado por dados de uma tabela no BD.
isto acontece quando vc esta criando o usuario ou editando ele? ou em ambos
robinsonbsilva
Quando eu carrego a tela para edição, vem perfeito!
preenche o combo, seleciona o valor correto!
Agora no momento de “atualizar/salvar” ele reclama.
Fiz um “insert” manual só para testar.
R
rjbcordeiro
se é na hora de salvar, acho que o required esta validando antes de setar a empresa no seu usuario. tenta colocar um valueChangeListener para ver se é isto ou então tenta usar um a4j:support event=“onchange”
robinsonbsilva
caramba…até tirando o required ele dá a mensagem de
" * form:empresa: Erro de validação: o valor não é válido "