我正在尝试通过调用控制器来检索javascript中的一些JSON数据。控制器返回一个MappingJacksonJsonView ModelandView,但是.getJSON总是在.../handsechancene.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
}发布于 2013-02-24 11:27:47
如果您试图从Ajax请求中仅获取一个JSON对象,则需要将@ResponseBody添加到您的方法中,并使您的方法返回结果对象。
@ResponseBody告诉Spring,他需要序列化您的对象以作为content-type返回给客户端。默认情况下,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来做例子和配置。
https://stackoverflow.com/questions/15044969
复制相似问题