近来发现controller里有不同的处理返回数据的方式,其中包括ModelMap不明白是如何处理数据返回的,所以在此记录如下:
1.说到如何处理返回数据,要涉及到jsp的九大内置对象及其作用域
2.还要涉及到jquery的ajax请求方法
ModelMap是什么
ModelMap
实现了Map
接口,包含Map
方法,addAttribute
方法,addAttributes
方法。在视图层可以通过reauest
来找到ModelMap
的数据。
ModelMap的使用
@RequestMapping("/qryHHGoodsVolumeByTime")
public void qryHHGoodsVolumeByTime(HttpServletRequest request, ModelMap map){
logger.debug("MultimodalTransportController -- qryHHGoodsTypeByTime");
String startDate = StringUtils.trimToEmpty(request.getParameter("startDate"));
String endDate = StringUtils.trimToEmpty(request.getParameter("endDate"));
map.addAttribute("HHVOLUME_DATA", multimodalTransportService.qryHHGoodsVolumeByTime(startDate, endDate));
map.addAttribute("MONTHDATA_LIST", multimodalTransportService.qryMonthDataListByTime(startDate, endDate));
map.addAttribute("SUCCESS", true);
}
使用分析
因为ModelMap
是存放在视图层的request
里面的全局变量,容易造成异常,所以不建议使用这种方式。
替代方式
不再在void
方法里面将数据塞到modelMap
对象里面,而是直接新建返回一个Map
对象。
@RequestMapping("/qryHHGoodsVolumeByTime")
public Map<String,Object> qryHHGoodsVolumeByTime(HttpServletRequest request, ModelMap modelMap){
logger.debug("MultimodalTransportController -- qryHHGoodsTypeByTime");
String startDate = StringUtils.trimToEmpty(request.getParameter("startDate"));
String endDate = StringUtils.trimToEmpty(request.getParameter("endDate"));
Map<String,Object> map=new LinkedHashMap();
map.addAttribute("HHVOLUME_DATA", multimodalTransportService.qryHHGoodsVolumeByTime(startDate, endDate));
map.addAttribute("MONTHDATA_LIST", multimodalTransportService.qryMonthDataListByTime(startDate, endDate));
map.addAttribute("SUCCESS", true);
return map;
}