modelMap怎么接收执行的结果

modelMap怎么接收执行的结果

@RequestMapping(value = "/addproductcategorys", method = RequestMethod.POST)
@ResponseBody
private Map<String, Object> addProductCategorys(@RequestBody List<ProductCategory> productCategoryList,
HttpServletRequest request) {
   Map<String, Object> modelMap = new HashMap<String, Object>();
Shop currentShop = (Shop) request.getSession().getAttribute("currentShop");
for (ProductCategory pc : productCategoryList) {
       pc.setShopId(currentShop.getShopId());
}
   if (productCategoryList != null && productCategoryList.size() > 0) {
       try {
           ProductCategoryExecution pe = productCategoryService.batchAddProductCategory(productCategoryList);
if (pe.getState() == ProductCategoryStateEnum.SUCCESS.getState()) {
               modelMap.put("success", true);
} else {
               modelMap.put("success", false);
modelMap.put("errMsg", pe.getStateInfo());
}
       } catch (ProductCategoryOperationException e) {
           modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
return modelMap;
}

pe是

 productCategoryService.batchAddProductCategory

的执行结果,这个是什么放到modelMap中的喃?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小脸 2021-08-07 18:31:45

同学你好,pe 这个值只是接收接口批量添加的一个返回,用来判断成功与否

http://img1.sycdn.imooc.com//climg/610e4a5a09837d3712740485.jpg

这里由pe.getState()是否等于1来判断是否批量添加成功,成功的话往map里面添加进true,至于modelMap这个map集合只是返回前端的一个结果,由框架底层转为json的形式返回到前台

http://img1.sycdn.imooc.com//climg/610e4aee090c034e11840409.jpg

这里success只是自己定义一个key,方便到前台进行成功与否的判断,当前key可以自己去定义,比如
http://img1.sycdn.imooc.com//climg/610e4b4609b1f85900000000.jpg

这样,前台只需判断

if(data.a){
//成功
}else{
//失败
}

祝学习愉快~

好帮手慕小脸 2021-08-06 11:27:16

同学你好,modelMap.put中modelMap本质是也是一个map集合,可以调用put方法来完成添加数据的方法。这里类似于之前的 

 request.setAttribute(“rows”,list); 
 request.setAttribute("total", list.size());

转发到对应的页面去,只不过这里是放到了modelMap中,并作为json对象,返回到请求过来的页面中去。

祝学习愉快~


  • 提问者 视线模糊 #1
     ProductCategoryExecution pe = productCategoryService.batchAddProductCategory(productCategoryList);
    if (pe.getState() == ProductCategoryStateEnum.SUCCESS.getState()) {

    就是在这一步没搞明白啊,pe才是执行的结果是list集合吧,后面的modelMap.put括号里面没有pe啊

     modelMap.put("success", true);

    按以前的写法是,将pe的集合放入reques中是按下面的写法吧

      request.setAttribute(“rows”,pe); 
     request.setAttribute("total", pe.size());


    2021-08-06 17:45:52
  • 好帮手慕小脸 回复 提问者 视线模糊 #2

    同学你好,pe是执行结果,但不是list集合,这里pe并不需要往modelMap中添加,如下得到的结果是直接存在数据库中

    ProductCategoryExecution pe = productCategoryService.batchAddProductCategory(productCategoryList);

    然后将代码逐步向上追踪到service实现类,会发现该方法是用来对异常处理的

    http://img1.sycdn.imooc.com//climg/610d0ffb09faab9d12400589.jpg

    祝学习愉快~

    2021-08-06 18:35:16
  • 提问者 视线模糊 回复 好帮手慕小脸 #3
    modelMap.put("success", true);

    这里的true是代表什么?success又代表什么呀?以前的写法是将数据存到request中转发到页面,但是这里的pe是执行结果的话,相关的数据怎么转发到页面的?controller中的方法中rerun modelMap,这个map集合中包含的是什么?

    2021-08-07 09:27:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师