本文共 1356 字,大约阅读时间需要 4 分钟。
3.2.3 修改控制器
若要实现对电影的修改及保存操作,需要先将电影的数据展示在视图界面上,然后接收界面的操作,调用数据管理模块将更改的数据保存至数据库中,如代码清单3-6所示。其中,为了简化设计,将剧照中的图片文件和电影角色名称做了预定义处理。修改数据时,由于从界面传回的电影对象中,丢失了其角色关系的数据(这是OGM的缺点),所以再次查询一次数据库,以取得一个电影的完整数据,然后再执行修改的操作。
代码清单3-6 修改电影控制器
@RequestMapping(value="/edit/{id}")
public ModelAndView update(ModelMap model, @PathVariable Long id){
Movie movie = movieRepository.findOne(id);
String[] files = {"/images/movie/西游记.jpg","/images/movie/西游记续集.jpg"};
String[] rolelist = {"唐僧","孙悟空","猪八戒","沙僧"};
Iterable<Actor> actors = actorRepository.findAll();
model.addAttribute("files",files);
model.addAttribute("rolelist",rolelist);
model.addAttribute("movie",movie);
model.addAttribute("actors",actors);
return new ModelAndView("movie/edit");
}
@RequestMapping(method = RequestMethod.POST, value="/update")
public String update(Movie movie, HttpServletRequest request) throws Exception{
String rolename = request.getParameter("rolename");
String actorid = request.getParameter("actorid");
Movie old = movieRepository.findOne(movie.getId());
old.setName(movie.getName());
old.setPhoto(movie.getPhoto());
old.setCreateDate(movie.getCreateDate());
if(!StringUtils.isEmpty(rolename) && !StringUtils.isEmpty(actorid)) {
Actor actor = actorRepository.findOne(new Long(actorid));
old.addRole(actor, rolename);
}
movieRepository.save(old);
logger.info("修改->ID="+old.getId());
return "1";
}
转载地址:http://mpcmx.baihongyu.com/