Java .getJSON 404与ModelAndView发生错误

Java .getJSON 404与ModelAndView发生错误,java,json,spring-mvc,Java,Json,Spring Mvc,我试图通过调用控制器来检索javascript中的一些JSON数据。控制器返回MappingJacksonJsonView ModelandView,但.getJSON始终在…/handHealthy.json处报告404 从控制器返回ModelandView的方式是否有问题 控制器 @RequestMapping(value = "/{room}/handhygiene.json", method = RequestMethod.GET) public ModelAndView getHand

我试图通过调用控制器来检索javascript中的一些JSON数据。控制器返回MappingJacksonJsonView ModelandView,但.getJSON始终在…/handHealthy.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
}

如果您试图从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;
}
我假设您使用房间作为结果对象,但它可能是另一个对象或ArrayList,例如


您无法查看Spring示例以及示例和配置。

HTTP404是。。。找不到。getJSON调用正在成功到达控制器,该控制器返回modelandview。我的问题是,为什么返回的modelandview对象会导致404?(它到达控制器,但不是javascript的函数(数据){}部分。)