$('#buscaid').blur(function(){alert("to no blur");$.ajax({url:'<c:urlvalue="/produtos/buscaid.json"/>',type:'GET',data:$('#buscaid').val(),dataType:'json',success:function(produto){alert('entreinosuccess');$('#id').val(produto.id);$('#nome').val(produto.nome);$('#descricao').val(produto.descricao);$('#preco').val(produto.preco);$('#categoria_id').val(produto.categoria.id_categoria);$('#categoria').val(produto.categoria.descricao);$('#buscanome').focus();}});});
Por que que você faz um include do ID se depois você vai retornar um produto (que tem um getID() com o id que você precisa)??
-EDIT-
Cadê o “Caused by:” dessa exception?
Debuga para ver se o ID não está indo NULL.
P
pauloaguila
Rafael Guerreiro:
Acontece alguma exception?
Aonde que essa exception ocorre?
Por que que você faz um include do ID se depois você vai retornar um produto (que tem um getID() com o id que você precisa)??
-EDIT-
Cadê o “Caused by:” dessa exception?
Debuga para ver se o ID não está indo NULL.
entao velho, o erro ocorre qnd eu coloco o codigo no campo de busca por id e o focus sai dele.
O Caused By: ta ai:
Caused by: java.lang.IllegalArgumentException: id to load is required for loading
at org.hibernate.event.LoadEvent.<init>(LoadEvent.java:89)
at org.hibernate.event.LoadEvent.<init>(LoadEvent.java:61)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:982)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:978)
at br.com.goodbuy.dao.ProdutoDao.busca(ProdutoDao.java:44)
at br.com.goodbuy.controller.ProdutosController.buscaidJson(ProdutosController.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 43 more
Valeu velho, funcionou aqui. Você é o cara
Obrigado mesmo.
Agora só esclarecendo, eu preciso sempre colocar ai a variavel q eu to usando no metodo do json? No caso o ‘q’.
Rafael_Guerreiro
Na verdade, o problema é que quando você vai passar uma variável para a sua action (não importa se é ajax ou não) você precisa passar o nome e seu respectivo valor…
Ou seja, quando você vai usar um form para passar o nome através de um input, voce faz algo assim:
Saquei velho, obrigado.
Aproveitando novamente a deixa. To tentando mostrar uma mensagem na tela qnd o produto nao é encontrado. Como eu faço isso?
Rafael_Guerreiro
Então, nesse caso você pode criar uma classe que vai retornar a mensagem:
publicclassMessage{privatefinalintcode;privatefinalStringmessage;publicMessage(intcode,Stringmessage){if(message==null||message.trim().length<1)// Pode colocar essa verificação em um método estático e sair usando sempre que precisar.thrownewIllegalStateException("String'message'cannotbenullorempty.");this.code=code;this.message=message;}publicMessage(Stringmessage){this(200,message);// 200 é o código padrão quando o request deu certo.}// Getters}
Daí, na sua action, você primeiro verifica se o id que você está recebendo é maior que zero e diferente de null (pode colocar em um estático também)
Se não for maior que zero ou diferente de null, você retorna um JSON dando um new Message(500, this.bundle.getString("erro_id_invalido" ))
Se for, você consegue fazer o get do Hibernate.
O objeto que o Hibernate retorna tem que estar populado, se vier null é pq não encontrou no banco de dados e ai vc consegue retornar outro JSON com um new Message(500, this.bundle.getString("erro_produto_nao_encontrado"))