Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mapping restful ajax requests to spring

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?

like image 733
Diones Avatar asked May 13 '10 17:05

Diones


Video Answer


1 Answers

@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).

like image 153
axtavt Avatar answered Oct 03 '22 02:10

axtavt