首页 新闻 会员 周边

求问Springmvc一个参数绑定的问题

0
悬赏园豆:50 [已解决问题] 解决于 2014-08-11 11:03

假设一个视频网站,我有多种视频资源,数据表结构采用父子表的结构,

父表Multimedia(实体类)存所有多媒体资源的公有字段,子表Movie(Multimedia的子类)存电影的独有数据,子表Serial(Multimedia的子类)存剧集的独有数据等。

现在要写上传新资源的功能,我想用一个统一的接口来实现这两种资源的操作,也就是说,希望能够使用:

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute Multimedia m, Model model) {
  multimediaService.save(m);
  return "***";
}

来完成Movie和Serial的存储,现在肯定是不行的,springmvc不能知道我上传的究竟是哪一种子类资源,所以不能把子资源的独有数据填充到参数m上。具体是哪种对象我可以通过m.getType()来得到。我感觉InitBinder好像能起作用,但是没明白怎么用。

对于这个需求,求教有没有什么好的解决方法?谢谢大家

琴剑飘零的主页 琴剑飘零 | 菜鸟二级 | 园豆:419
提问于:2014-07-22 23:13
< >
分享
最佳答案
0

最后采取一种很2的方法,就是写一个MultimediaSet类,里面有movie和serial两个成员,

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute MultimediaSet ms, Model model) {

  Multimedia m = ms.get();
  multimediaService.save(m);
  return "***";
}

客户端提交的参数就是movie.name之类的,参数绑定之后,如果提交的是movie,那么ms.serial就是null,可以在ms.get里面判断那一种子类型不是null,把它返回赋值给m。

琴剑飘零 | 菜鸟二级 |园豆:419 | 2014-08-11 11:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册