关于map传递参数的问题

关于map传递参数的问题

@RequestMapping("/to_check")
public String toCheck(int id,Map<String,Object> map){
    map.put("claimVoucher",claimVoucherBiz.get(id));
    map.put("items",claimVoucherBiz.getItems(id));
    map.put("records",claimVoucherBiz.getRecords(id));
   DealRecord dealRecord=new DealRecord();
   dealRecord.setClaimVoucherId(id);
    map.put("record",dealRecord);
    return "claim_voucher_check";
}
//更新
@RequestMapping("/check")
public String check(HttpSession session,DealRecord dealRecord){
    Employee employee=(Employee)session.getAttribute("employee");
    dealRecord.setDealSn(employee.getSn());
    claimVoucherBiz.deal(dealRecord);
    return "redirect:deal";
}
  1. check方法中这个DealRecord dealRecord,dealRecord和map.put("record",dealRecord)里面的record名字不一样,之前不是一致强调名字要一样吗

  2. DealRecord dealRecord=new DealRecord();
      dealRecord.setClaimVoucherId(id);这个为什么要获取报销单编号,难道是通过报销单编号定位某一个报销单?能解释一下吗?

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

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

2回答
好帮手慕小班 2020-09-03 18:32:15

同学你好,在toCheck()方法中,传递的record需要与页面中的modelAttribute保持一致就可以,springmvc会将数据封装为DealRecord类型的对象。

http://img1.sycdn.imooc.com//climg/5f50c3b8098778fe08710151.jpg

如果同学想全部保持一致,可以将map.put("record",dealRecord)中record修改为dealRecord,比如:

@RequestMapping("/to_check")
public String toCheck(int id,Map<String,Object> map){
    map.put("claimVoucher",claimVoucherBiz.get(id));
    map.put("items",claimVoucherBiz.getItems(id));
    map.put("records",claimVoucherBiz.getRecords(id));
   DealRecord dealRecord=new DealRecord();
   dealRecord.setClaimVoucherId(id);
    map.put("dealRecord",dealRecord);
    return "claim_voucher_check";
}
//更新
@RequestMapping("/check")
public String check(HttpSession session,DealRecord dealRecord){
    Employee employee=(Employee)session.getAttribute("employee");
    dealRecord.setDealSn(employee.getSn());
    claimVoucherBiz.deal(dealRecord);
    return "redirect:deal";
}

在页面中修改为

http://img1.sycdn.imooc.com//climg/5f50c5620971abb210990185.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕标0359786 #1
    也就是说toCheck和check的DealRecord的对象名字可以不一样?
    2020-09-04 14:24:56
  • 好帮手慕阿满 回复 提问者 慕标0359786 #2
    同学你好,可以的,同学可以自己试试。祝:学习愉快~
    2020-09-04 15:43:38
好帮手慕小班 2020-09-03 14:04:06

同学你好,1、map.put("record",dealRecord)里面的record作为key值,在页面中使用时,与key保持一致就可以。这个对于key和value值,并不做强制要求必须一致。

    2、这里可以这样理解一下:在toCheck()方法中,新建一个dealrecored对象,并将要处理的报销单id传入dealrecored中,将dealrecored存入map,转发到前台页面

http://img1.sycdn.imooc.com//climg/5f50871209e08c1606970452.jpg


在前台页面中,SpringMVC的form表单,使用ModelAttribute解析record,如:

http://img1.sycdn.imooc.com//climg/5f50873109b68a8810070491.jpg

comment对应的是备注信息,下边dealway是处理结果。点击提交,会将报销单的claimVoucherId,备注信息comment,处理结果等封装到record中,提交给check()方法。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕标0359786 #1
    map.put("record",dealRecord)的dealRecord一定要和check方法里的参数(DealRecord dealRecord)的dealRecord,这两个的名字是不是一定要保持一致,不然不可以传递参数
    2020-09-03 16:04:57
  • 提问者 慕标0359786 #2
    因为之前老师一直强调这两个一定要一样,就像在部门的controller里面 @RequestMapping("/to_add") public String toAdd(Map<String,Object> map){ map.put("department",new Department()); return "department_add"; } @RequestMapping("/add") public String add(Department department){ departmentBiz.add(department); return "redirect:list"; }
    2020-09-03 16:11:03
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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