Igccd
2012-11-04 23:48
浏览 459
已采纳

springMVC 数据绑定 多个对象 如何准确绑定?

以前用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]
这样子在action中就能封装好student和teacher对象。

但是在spring中,要这么写

[code="java"]@RequestMapping("/school.do")

public String school(Student student, Teacher teacher) {

 return "school";

}[/code]
如果还是想刚才的jsp那些写表单,是不能封装参数的,必须把“student.”和“teacher.”去掉,但是这样封装就不能准确封装了。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • jinnianshilongnian 2012-11-06 07:39
    已采纳

    刚刚写了一个扩展来解决这个问题
    [url]http://jinnianshilongnian.iteye.com/blog/1717180[/url]

    支持spring 3.1.x 暂不支持spring3.0

    打赏 评论
  • jinnianshilongnian 2012-11-05 07:05

    这是spring的问题,确实不能带前缀,如果需要我可以写一个扩展 :D

    打赏 评论
  • oyj7454103 2012-11-05 09:00

    如果一个表单需要提交多个对象!这个时候你的设计可能不是那么优雅!
    如果想精确匹配,你写一个总的 DTO 转换下

    打赏 评论
  • M44346460 2012-11-05 09:24

    自己写个DataBinderModel{
    Student student;
    Teacher teacher;
    //get --set---省略
    }。
    把参数绑定到这个model就可以了。这方面确实没有struts直接,需要中间转一下。

    打赏 评论
  • jiangyuyuan 2012-11-05 10:00

    写Dto转化一下吧!struts2方便了开发,牺牲了运行的效率

    打赏 评论
  • iteye_5598 2012-11-05 10:12

    楼主看下这个帖子,里面讨论了这个问题,http://www.iteye.com/topic/1124433,第三页

    打赏 评论
  • iloveprogramme12 2014-01-24 14:20

    方便了开发,就会牺牲性能。就看如何取舍了。

    打赏 评论

相关推荐 更多相似问题