Vraptor e Jquery UI autocomplete

6 respostas
D

Galera estou tentando fazer um autocomplete com o jquery ui autocomplete, acontece a busca no banco, o vraptor serealiza o objeto pra mim, mais não aparece nada na lista dos dados que ele buscou, simplemente não faz nada com os dados buscados.

Alguem sabe o que pode ser? eu não sei se tem alguma coisa a ver de como o vraptor serealiza o objeto, como {“list”: […]}, será que é por causa do list?

6 Respostas

G

Esse problema de serializar uma lista já foi corrigido no 3.1.

O ideal é você imprimir o resultado que o vraptor imprime no JSON, assim você pode ver se está imprimindo o resultado correto.

D

estou usando a versão 3.1, mais ainda esta com list.

D

Estranho é que se eu serializo somente um objeto, o objeto json sai todo estranho.
Código que gera o json.

@Get @Path("/tipocheckpoint.autocomplete/{tipoCheckpoint.codigo}") public void autocomplete(TipoCheckpoint tipoCheckpoint){ TipoCheckpoint tipo = service.obter(tipoCheckpoint); if(tipo != null && tipo.getCodigo() > 0){ System.out.println(tipo.getDescricao()); result.use(Results.json()).from(tipo).exclude("checkpoints").serialize(); } }

objeto json:

<blockquote>{“tipoCheckpoint_$$_javassist_8”: {

"@resolves-to": “tipoCheckpoint”,

“codigo”: 1,

“descricao”: “DESCRITIVA”,

“checkpoints”: [

false,

{

"@class": “tipoCheckpoint”</blockquote>
luis.fernandez

Fala davisnog.

Obteve algum sucesso?

Estou tendo o mesmo problema.

<li>
	<form action="<c:url value='/produto/buscar'/>">
		<input name="nome"/>
	</form>
	<script type="text/javascript">
		$("#busca").puts("Busca produtos por nome");
		$("#busca").autocomplete("/goodbuy/produto/busca.json",{
			dataType:"json",
			parse:function(json){
				return $.map(json.list,function(produto){
					return {
						data:produto,
						value:produto.nome,
						result:produto.nome
					};
				});
			},
			formatItem:function(produto){
				return produto.nome + "(" + produto.preco + ")";
			}
		});
	</script>
</li>
@Get
	@Path("/produto/busca.json")
	public void buscaJson(String q) {
		result.use(json()).from(dao.buscar(q)).exclude("id", "descricao").serialize();
	}

Se eu acessar a url (http://localhost:8080/goodbuy/produto/busca.json?nome=a) diretamente (alterando o parâmetro que está chegando NULL), ele retorna o objeto:

{"list": [
  {
    "nome": "Memoria Kingston",
    "preco": 240.0
  },
  {
    "nome": "Copo Plastico",
    "preco": 10.0
  },
  {
    "nome": "Cadeira",
    "preco": 45.0
  }
]}

Abcs
Luis Fernandez

D

O plugin pro jquery tem duas versões pelo que eu pude perceber, tem essa versão [http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/], e tem essa que esta em desenvolvimento ainda, que esta inclusa no pacote JQuery UI 1.8, o link é esse [http://blog.jqueryui.com/2009/08/jquery-ui-18a1/].

No primeiro link o autocomplete passa como parametro q=o_que_vc_esta_procurando, já o do segundo link ele passa term=o_que_vc_esta_procurando.

Então ele não vai mandar nome=a, como no seu exemplo.
Então você deve ter um parâmetro do tipo String conforme a versão que você esta utilizando, String q ou String term, dessa forma você vai conseguir pegar o valor do parâmetro.

E a questão de excluir as propriedades que você não quer, é um bug que esta para ser corrigido na proxima versão. No link abaixo você pode ver melhor essa discusão.

[http://www.guj.com.br/posts/list/196699.java#986122]

luis.fernandez

O meu problema era o seguinte:

Tava faltando identificar o campo que estava sendo referenciado pelo json: linha 3 (id="busca")

<li>
	<form action="<c:url value='/produto/buscar'/>">
		<input id="busca" name="nome"/>
	</form>
	<script type="text/javascript">
		$("#busca").puts("Busca produtos por nome");
		$("#busca").autocomplete("/goodbuy/produto/busca.json",{
			dataType:"json",
			parse:function(json){
				return $.map(json.list,function(produto){
					return {
						data:produto,
						value:produto.nome,
						result:produto.nome
					};
				});
			},
			formatItem:function(produto){
				return produto.nome + "(" + produto.preco + ")";
			}
		});
	</script>
</li>
Criado 28 de janeiro de 2010
Ultima resposta 8 de fev. de 2010
Respostas 6
Participantes 3