VRAPTOR3 + EXTJS + String JSON Response

5 respostas
E

Oi, eu preciso voltar a seguinte resposta
"{success:true, ok:true}"

En java:

boolean granted = ;

this.result.use(json()).withoutRoot().from("{success:true, ok:"+granted+"}")	.serialize();

Em Javascript recebo a seguinte em ajax responseText
""{success:true, ok:true}"" //não quero “”

Eu preciso do seguinte:
"{success:true, ok:true}"

5 Respostas

Rafael_Guerreiro

Crie uma classe que vai fazer exatamente isso para você. Java é orientado à objetos.

Assim:

@SuppressWarnings("unused")
public class GrantedJSONWrapper {
   private final boolean success;
   private final boolean ok;

   public GrantedJSONWrapper (boolean success, boolean ok) {
      this.success = success;
      this.ok = ok;
   }
}

E na hora de usar, assim:

result.use(json()).withoutRoot().from(new GrantedJSONWrapper(true, granted)).serialize();
E

Eu não quero criar uma classe para cada tipo diferente de resposta.
Não há alternativa?

Lucas_Cavalcanti

vc pode usar o body direto:

result.use(Results.http()).body("{\"seu": \"json\"}");

ele só não seta o content type automaticamente.

E

Certo. Mas também tenho de escapear. VRaptor3 não tem solução direta. = (

Rafael_Guerreiro

Me explica cada um do seu tipo diferente de resposta?

Então, esse é o problema, cada classe tem seu comportamento, sua utilidade, por isso você deveria usar classes com poucas responsabilidades e úteis.

Eu não vejo nenhum problema em fazer isso e, aliás, uso MUITO isso.

Uso uma classe para receber os dados do formulário, outra para persistir no banco e mais outra para retornar os dados para o form, usando ajax. Então, para cada entidade, eu tenho no mínimo 3 classes.
Por questões simples como evitar erros, bugs, falhas de segurança, performance e manutenabilidade.

Se cada um do seus “tipos diferentes de resposta” tiverem campos diferentes, então, sim, uma classe para cada um. Agora se não, não vejo motivo para tal.

Criado 12 de fevereiro de 2014
Ultima resposta 12 de fev. de 2014
Respostas 5
Participantes 3