@Responsebody表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径, 而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。
最近做项目时就遇到了这个问题,网站首页有一个表单,用户输入表单后点击提交按钮,应该还显示的是首页,而不应该刷新。所以首页表单的处理用的是ajax,表单提交地址对应一个Controller的方法,不希望这个方法的返回被解析成路径。使用@Responsebody就非常合适。
@RequestMapping(value = "/getFeedback")
public @ResponseBody String getFeedback(HttpServletRequest request, Feedback feedback, Model model){
String ip = request.getRemoteHost();
feedback.setIp(ip);
Date create = new Date();
feedback.setCreatetime(create);
feedbackService.saveFeedback(feedback);
List<Feedback> feedbacktoshow = feedbackService.findByClass(0,1);
model.addAttribute("feedbacktoshow",feedbacktoshow.get(0));
return "";
}