Fala galera do guj. Cá estou eu com mais uma dúvida. To tentando fazer uma busca por id, que ao clicar enter, o conteúdo dos outros campos será preenchido pelo método do de busca do json. Meu codigo está assim:
ProdutoDao
public Produto busca(Long id) {
return (Produto) this.session.load(Produto.class, id);
}
public List<Produto> busca(String nome) {
return this.session.createCriteria(Produto.class)
.add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE))
.list();
}
ProdutosController
@Get("/produtos/busca")
public List<Produto> busca(String nome){
result.include("nome",nome);
return pdao.busca(nome);
}
@Get("/produtos/buscaid")
public Produto busca(Long id){
result.include("id",id);
return pdao.busca(id);
}
@Get("/produtos/busca.json")
public void buscaJson(String q){
result.use(json()).withoutRoot()
.from(pdao.busca(q))
.serialize();
}
@Get("/produtos/buscaid.json")
public void buscaidJson(Long q){
result.use(json()).withoutRoot()
.from(pdao.busca(q))
.serialize();
}
e meu formulario:
....
<label for="id">Id:</label>
<input id="id" type="text" name="produto.id" value="${obj.id }"/>
....
$("#id").autocomplete('<c:url value="/produtos/buscaid.json"/>',
{
dataType : "json",
parse : function(produtos) {
return $.map(produtos, function(produto) {
return {
data : produto,
value : produto.id,
result : produto.id
};
});
},
formatItem : function(produto) {
document.getElementById("nome").value = produto.nome;
document.getElementById("descricao").value = produto.descricao;
document.getElementById("preco").value = produto.preco;
document.getElementById("categoria_id").value = produto.categoria.id_categoria;
document.getElementById("categoria").value = produto.categoria.descricao;
return produto.id;
}
});
A busca é feita no console (tá printando a consulta feita pelo hibernate), mas os campos não estão sendo preenchidos. Estou fazendo algo errado?
Agradeço desde já 
OBS: Fiz a mesma consulta por descrição e deu certo.
é como se o autocomplete não estivesse funcionando. Mas eu to chamando os js certinho.