2010-05-13 87 views
11

我有這樣一段代碼:映射寧靜AJAX請求到彈簧

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

據我知道它應該採取test.json請求TIPO = H,並返回Variavel的JSON表示[] ,但是當我提出這樣的要求,我得到:

HTTP狀態406 -

類型狀態報告

消息

由該請求所標識

descriptionThe資源僅能夠根據請求「接受」標題()

通過使用下面的函數I可以得到預期的JSON與特徵產生響應不能接受的:

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

我做錯了什麼?

+0

在[春季JSON請求獲取406(不可接受)]中更全面地介紹了這個主題。(http://stackoverflow.com/questions/7462202/spring-json-request-getting-406-not-acceptable) – kdgregory 2012-08-16 01:39:42

回答

12

@RequestBody/@ResponseBody註解不使用普通視圖解析器,它們使用自己的HttpMessageConverter s。爲了使用這些註釋,您應該將這些轉換器配置爲AnnotationMethodHandlerAdapter,如the reference(您可能需要MappingJacksonHttpMessageConverter)中所述。

+0

嗯在哪種情況下我應該考慮這種方法? – Diones 2010-05-24 14:33:31