【发布时间】:2011-03-22 04:43:39
【问题描述】:
我想使用@ModelAttribute 的自动装配魔法来获取和传递参考数据。这样做的问题是使用@ModelAttribute 添加到模型中的任何内容都被假定为表单支持对象,然后绑定到请求,可能会修改对象。
我只是希望将它们添加到模型中以供视图参考,并能够使用参数级别@ModelAttribute 将对象连接到使用@RequestMapping 注释的方法中。有没有办法在没有一些冗长的@InitBinder 方法的情况下实现这一点?
例如:
@ModelAttribute("owner")
public Person getOwner(@PathVariable("ownerId") Integer ownerId){
return getOwnerFromDatabaseById(ownerId);
}
@RequestMapping("/{ownerId}/addPet.do")
public ModelAndView addPet(HttpServletRequest request, @ModelAttribute("owner") Person owner){
String name = ServletRequestUtils.getStringParameter(request, "name");
Pet pet = new Pet();
pet.setName(name);
pet.setOwner(owner);
saveToDatabase(pet);
}
将宠物添加到所有者的简单示例。我想将所有者放置在模型中以供视图使用,并且我还想利用addPet() 中的自动装配参数。假设Pet 和Person 都有成员name。在这种情况下,owner 将自动绑定到请求,将其name 设置为宠物的名字。如何避免这种情况?
【问题讨论】:
-
“假定为表单支持对象”是什么意思?有任何不良行为的例子吗?
标签: spring spring-mvc annotations