关于dto和页面信息的传递
不是很懂dto的作用,为什么需要它来获取报销单对象和报销详情集合?
在控制器的toAdd方法中用Map传递给jsp一个实例化的dto,这有什么作用?不是很明白视频中说的是一个视图;
关于数据传递,实例化的dto是如何封装数据并返回给控制器的add方法?我的想法是dto对象是new出来的,它的成员变量怎么会有页面上填写的值呢?dto对象的setter方法有用被调用到吗,什么时候调用的?不是很理解其中的过程。
// dto
public class ClaimVoucherInfo {
private ClaimVoucher claimVoucher;
private List<ClaimVoucherItem>items;
public ClaimVoucher getClaimVoucher() {
return claimVoucher;
}
public void setClaimVoucher(ClaimVoucher claimVoucher) {
this.claimVoucher = claimVoucher;
}
public List<ClaimVoucherItem> getItems() {
return items;
}
public void setItems(List<ClaimVoucherItem> items) {
this.items = items;
}
}正在回答
同学你好,关于同学的问题:
1、关于报销单,需要有报销单的基本信息,比如创建人,待处理人,状态等,还要有具体信息,比如报销的是交通还是住宿,费用是多少等等。没有一个具体的实体类来描述报销单,所以这里创建了dto包下的ClaimVoucherInfo类,用来描述具体的报销单信息。
在ClaimVoucherInfo类中,
claimVoucher用来描述报销单的基本信息。
items用来描述具体信息,报销单中可能存在多个条目信息,所以使用List集合。

2、在claim_voucher_add.jsp页面中,使用的是springMVC的form表单,所以在toAdd()方法中,需要传递给页面一个modelAttribute,也就是实例dto,这样在claim_voucher_add.jsp页面中,modelAttribute可以解析这个实例dto。添加报销单后,将其封装为一个dto实例传递到add()方法中。如:


另外问一下同学说的视图是在哪里出现的。
3、这是SpringMVC的form表单完成的,在toAdd()方法中传递给页面一个modelAttribute,在页面中modelAttribute解析该实例,并根据path将属性设置到表单中,如:

添加数据后,根据添加的属性值具体封装成一个dto实例传递给add()方法。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星