以前用struts2时,url请求参数自动封装成对象用的很是爽,但是在spring中,就有问题了:
比如,有两个对象
[code="java"]class Student{
private String name;
private String type; //比如有自费、公费
}
[/code]
[code="java"]class teacher{
private String name;
private String level;
}[/code]
当中的get/set方法省略。
struts2的中jsp的写法是:
[code="java"]
<input name="student.name" value="Kate" />
<input name="student.type" value="自费" />
<input name="teacher.name" value="Gavin" />
<input name="teacher.level" value="2" />
[/code]但是在spring中,要这么写
[code="java"]@RequestMapping("/school.do")
public String school(Student student, Teacher teacher) {
return "school";
}[/code]
如果还是想刚才的jsp那些写表单,是不能封装参数的,必须把“student.”和“teacher.”去掉,但是这样封装就不能准确封装了。
刚刚写了一个扩展来解决这个问题
[url]http://jinnianshilongnian.iteye.com/blog/1717180[/url]
支持spring 3.1.x 暂不支持spring3.0
这是spring的问题,确实不能带前缀,如果需要我可以写一个扩展 :D
如果一个表单需要提交多个对象!这个时候你的设计可能不是那么优雅!
如果想精确匹配,你写一个总的 DTO 转换下
自己写个DataBinderModel{
Student student;
Teacher teacher;
//get --set---省略
}。
把参数绑定到这个model就可以了。这方面确实没有struts直接,需要中间转一下。
写Dto转化一下吧!struts2方便了开发,牺牲了运行的效率
楼主看下这个帖子,里面讨论了这个问题,http://www.iteye.com/topic/1124433,第三页
方便了开发,就会牺牲性能。就看如何取舍了。