.getJSON 404 ModelAndView出错

时间:2013-02-23 19:59:18

标签: java json spring-mvc

我试图通过调用控制器来检索我的javascript中的一些JSON数据。控制器返回MappingJacksonJsonView ModelandView,但.getJSON始终在... / handhygiene.json上报告404。

我从控制器返回ModelandView的方式有问题吗?

控制器

@RequestMapping(value = "/{room}/handhygiene.json", method = RequestMethod.GET)
public ModelAndView getHandHygienePageAsync(
    @PathVariable(value = "room") String roomCode) {
ModelAndView mav = new ModelAndView(new MappingJacksonJsonView());
mav.getModelMap().addAttribute(blahblahblah); //adds some attributes
...

return mav;
}

的Javascript

var currentURL = window.location;
$.getJSON(currentURL + ".json",
    function(data) {
    ... //does stuff with data
}

1 个答案:

答案 0 :(得分:1)

如果您尝试从Ajax请求中仅获取JSON对象,则需要将@ResponseBody添加到您的方法中,并将结果对象作为方法返回。

@ResponseBody告诉Spring他需要序列化你的对象以返回到客户端作为内容类型。默认情况下,Spring使用JSON序列化。 ModelAndView将尝试返回.JSP页面。也许你的资源上没有这个jsp页面,所以服务器返回404错误。

我认为这段代码应该适合你:

@RequestMapping(value = "/{room}/handhygiene.json", method = RequestMethod.GET)
public @ResponseBody Room getHandHygienePageAsync(@PathVariable(value = "room") String roomCode) {
    Room room = myService.findRoomByRoomCode(roomCode);
    return room;
}

我假设您使用Room作为结果对象,但它可能是另一个对象或ArrayList,例如。

你不能看一下here的Spring例子,here的例子和配置。