views:

331

answers:

1

I have this piece of code:

@RequestMapping(value = "/test.json", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody Object[] generateFile(@RequestParam String tipo) {
    Object[] variaveis = Variavel.getListVariavelByTipo(tipo);
    return variaveis;
}

As far as I know it should take a request to test.json?tipo=H and return the JSON representation of Variavel[], however when I make such request I get:

HTTP Status 406 -

type Status report

message

descriptionThe resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ()

By using the following function I can get the expected json:

@RequestMapping(value = "/teste.json")
public void testeJson(Model model, @RequestParam String tipo) {
    model.addAttribute("data", Variavel.getListVariavelByTipo("H"));
}

What I'm doing wrong?

A: 

@RequestBody/@ResponseBody annotations don't use normal view resolvers, they use their own HttpMessageConverters. In order to use these annotations, you should configure these converters in AnnotationMethodHandlerAdapter, as described in the reference (you probably need MappingJacksonHttpMessageConverter).

axtavt
Hmm, on which situation should I consider this approach?
Diones