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.[/quote]
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’.
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:
Então, nesse caso você pode criar uma classe que vai retornar a mensagem:
[code]public class Message {
private final int code;
private final String message;
public Message (int code, String message){
if (message == null || message.trim().length < 1) // Pode colocar essa verificação em um método estático e sair usando sempre que precisar.
throw new IllegalStateException(“String ‘message’ cannot be null or empty.” );
this.code = code;
this.message = message;
}
public Message (String message) {
this(200, message); // 200 é o código padrão quando o request deu certo.
}
// Getters
}[/code]
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"))