Problema com JSON vRaptor 4

68 views
Skip to first unread message

Micael Mota

unread,
Dec 10, 2015, 11:44:38 AM12/10/15
to caelum-vraptor
Amigos,  preciso receber num controller de meu web-service um array de objetos Json.

Seguindo o tutorial no guia do vRaptor eu fiz o seguinte:

Criei uma classe chamada Teste ----->

public class Teste {
   
    private String id;
    private String name;

    public Teste(){}

    public Teste(String id, String name) {
        this.id = id;
        this.name = name;
    }
    getters/setters...
}



No controller está assim ----->

        @Post("/api/testeJson")
    @Consumes("application/json")
    public void testeJson(Teste teste){
        System.out.println("id:  " + teste.getid());
        System.out.println("nome:  " + teste.getName());
        result.use(Results.json()).from(teste).serialize();
    }

Estou tentando fazer a requisição via Jquery Ajax assim:

var obj = {"id": 1, "name": "Carlos"};

$.ajax({
  url : "api/testeJson",
  type: 'post',
  dataType: 'json',
  contentType : "application/json;",
  jsonData:  {"teste": obj},
  success : function(data) {
      console.log("deu certo" + data);
  },
  error: function() {
      console.log("deu merda");
  }
});

E o que acontece é o seguinte,  a requisição dá sucesso, sem nenhum problema, porém os atributos não são mapeados, ficam null.
Não há nenhum StackTrace, não aparece nada de erro.

Tentei colocar para receber um JsonArray só que só funciona se no ajax eu usar o JSON.stringfy();

Desde já, obrigado e parabéns a todos que contribuiram e contruibuem ainda para o desenvolvimendo do framework.

Lucas Cavalcanti

unread,
Dec 11, 2015, 8:33:17 AM12/11/15
to caelum-vraptor
habilita o log de debug do vraptor e ve se aparece algo relacionado a essa requisição. Copia o log aqui


--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Felipe Brandão

unread,
Dec 11, 2015, 8:50:07 AM12/11/15
to caelum-...@googlegroups.com
Micael, 

Notei que o "id" está sendo enviado como inteiro no json:

var obj = {"id": 1, "name": "Carlos"};

Já tentou enviar como abaixo ?

var obj = {"id": "1", "name": "Carlos"};

abs

--
Felipe Brandão

@felipebrnd - coderwall.com/felipebrnd

Felipe Brandão

unread,
Dec 11, 2015, 8:56:36 AM12/11/15
to caelum-...@googlegroups.com
Outro detalhe que notei depois, no código do controller o getter está getid() ao invés de getId() acredito que se o setter estiver setid() ao invés de setId() também não vai funcionar.

abs
--
Felipe Brandão

@felipebrnd - coderwall.com/felipebrnd


Fabiano Almeida

unread,
Feb 6, 2017, 7:26:28 AM2/6/17
to caelum-vraptor
Prezados, bom dia.

Aproveitando o ensejo do tema, estou construindo uma API usando o Vraptor 4 e retornando sempre JSON. Dentro de uma das tags do JSON preciso retornar um HTML. Já fiz todas as configurações necessárias para que retorne os dados em UTF-8, mas não funciona. O que pode ser?

web.xml
  <context-param>
    <param-name>br.com.caelum.vraptor.encoding</param-name>
    <param-value>UTF-8</param-value>
  </context-param> 

pom.xml
    <dependency>
        <groupId>br.com.caelum</groupId>
        <artifactId>vraptor</artifactId>
        <version>4.2.0-RC3</version>
    </dependency>
    <dependency>
        <groupId>br.com.caelum.vraptor</groupId>
        <artifactId>vraptor-javatime</artifactId>
        <version>4.1.0-RC3</version>
    </dependency>
...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

Controller.java

result.use( Results.http() ).setStatusCode( Response.Status.OK.getStatusCode() );
result.use( Results.http() ).addHeader( HttpHeaders.CONTENT_TYPE,  MediaType.APPLICATION_JSON_TYPE.withCharset( "UTF-8" ).toString() );
result.use( Results.json() ).withoutRoot().from( paginaDetalhe ).recursive().serialize();

Resposta:

{"template":"A","hasGroupBy":false,"currentPage":1,"pageTitle":"Resultado de Exames","pageHeader":[{"id":"","details":[{"order":"0","value":"CREATININA"},{"order":"1","value":"Liberado"}]}],"pageContent":[{"sectionList":[{"items":[{"value":"\u003chtml lang\u003d\u0027pt-br\u0027\u003e\u003cbody\u003e\u003cmeta charset\u003d\u0027UTF-8\u0027\u003e\u003cstyle type\u003d\u0027text/css\u0027\u003ebody { padding: 10px; white-space: pre-wrap;}.container-imagem { padding-bottom: 4px; }.image_fix { display: block; }\u003c/style\u003e\u003carticle class\u003d\u0027clearfix\u0027\u003e\u003cdiv class\u003d\u0027main-ficha\u0027\u003e\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003cbr\u003e\t\t\t\u003cbr\u003e                                                       valor referência\t\t\t\u003cbr\u003eresultado                                             fem: acima 16 anos\t\t\t\u003cbr\u003e------------------------------------------------------------------------\t\t\t\u003cbr\u003eCREATININA : 1,31\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eLiberado em:\u003c/strong\u003e 18/01/2017 21:30:01\u003c/p\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003ePedido Nº:\u003c/strong\u003e 230002\u003c/p\u003e\u003c/div\u003e\u003c/article\u003e\u003c/body\u003e\u003c/html\u003e","type":"html"}]}]}]}

Obrigado de antemão.

Atenciosamente,

Fabiano Almeida.

Ivo Sestren Junior

unread,
Feb 6, 2017, 7:46:45 AM2/6/17
to caelum-...@googlegroups.com
Aparentemente pelo código gerado está em UTF-8 seu resultado.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.

Fabiano Almeida

unread,
Feb 6, 2017, 8:44:17 AM2/6/17
to caelum-...@googlegroups.com
Ivo,

Obrigado pelo retorno.

Fui fiz um teste e nada mudou. Modiquei de UTF-8 para ISO-8859-1 e mesmo assim a renderização do JSON foi o mesmo.

O que acha que pode ser?

Atenciosamente,

Fabiano Almeida.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
--
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/caelum-vraptor/Lyxj0P-eEBc/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

Fabiano Almeida

unread,
Feb 7, 2017, 10:14:54 AM2/7/17
to caelum-...@googlegroups.com
Mais alguém teria alguma ideia do que pode estar ocorrendo?

Fabiano Almeida

unread,
Feb 8, 2017, 7:27:26 AM2/8/17
to caelum-...@googlegroups.com
Percebi que após mudar o charset e abrir no Chrome está aparecendo conforme coloquei aqui. Porém, quando abri no Postman, abriu as tags HTML corretamente. Agora fiquei sem entender. Alguém poderia dar uma luz?
Reply all
Reply to author
Forward
0 new messages