Response por Ajax

4 respostas
tucano

Olá,

eu posso apenas enviar apenas um objeto/lista pelo response do ajax ou ele permite enviar vários objetos??

estou precisando enviar mais de um objeto no response da requisição…
… e esbarrei com essa dificuldade.

algo como…

// objeto 1
result.use(Results.json()).from("string de Teste", "teste").serialize();

//objeto 2
result.use(Results.json()).from(objetoQualquer, "objeto").serialize();

//objeto 2
result.use(Results.json()).from(objetoCliente, "cliente").serialize();

dessa forma dá tilt…
coloquei apenas para exemplificar…

um exemplo de json que preciso gerar…

{
  "teste" : "string de Teste",
  "objeto" : objetoQualquer,
  "cliente" :  objetoCliente
}

Alguém consegue ajudar nessa questão?
=D

4 Respostas

Lucas_Cavalcanti

tenta fazer isso, mas não é garantido:

result.use(json()).withoutRoot().from(ImmutableMap.of(
    "teste", "string de Teste",
    "objeto", objetoQualquer,
    "cliente", objetoCliente
)).serialize();

se não funcionar assim tenta criar um map convencional… se mesmo assim não funcionar vc pode criar uma classezinha boba que tem esses 3 atributos. Ou tentar fazer funcionar com o mapa.

tucano

bah, não tive sucesso com o ImmutableMap…
ele não retornava nada no response…

o map eu já tinha tentado, mas ele zoa na serialização…

ele monta todo o objeto como um array…
consigo dai acessar apenas por map[2][1][1]…
assim o key que era jogando no map só servia para estrovar, não teria utilidade na camada view…

[

  [
    "teste",
     "string de Teste"
  ]

  [
    "objeto",
     [
       ...
     ]
  ]

  [
    "cliente",
     [
       ...
     ]
  ]

]

tá muito estranho,
teoricamente é algo simples,
mas a prática tá complexa…

a questão de montar um classe adicional só para proceder com o retorno, me parece meio gambiarra, nao?

Lucas_Cavalcanti

use o ImmutableMap e crie esse converter:

só vai funcionar pra mapas de String pra alguma coisa…

se tiver algum problema dá um toque pra eu atualizar o gist, plz

tucano

ok, vou testar e retorno

Criado 31 de julho de 2012
Ultima resposta 1 de ago. de 2012
Respostas 4
Participantes 2