Java .getJSON 404与ModelAndView发生错误
我试图通过调用控制器来检索javascript中的一些JSON数据。控制器返回MappingJacksonJsonView ModelandView,但.getJSON始终在…/handHealthy.json处报告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
@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的函数(数据){}部分。)