我使用的是Spring 2.0,现在我使用的是Spring 2.5,就Web控制器而言,Spring 2.5让生活变得非常简单。这个问题一直在我脑海中浮现,在2.0中我们必须设置命令类,因此用于为我们填充该命令对象的AbstractFormController。在Spring 2.5中我们不这样做,所以如何知道要使用哪个类?它取决于我们注释@ModelAttribute(“command”)的参数类型吗?
如果是,那么请让我知道任何提供确切机制的“Utils”类,其中我可以传递HttpRequest和类名(或Class对象),这将返回我填充的对象!
希望你有我的问题。
提前致谢。
答案 0 :(得分:3)
Web MVC注释绑定最终依赖于
org.springframework.beans.AbstractPropertyAccessor
有两个具体的实现:
org.springframework.beans.BeanWrapperImpl org.springframework.beans.DirectFieldAccessor
两者都接受一个Java对象,它将成为设置属性的目标。
第一个,BeanWrapperImpl使用java对象的setter / getter方法,而另一个直接设置字段。 两者都检查方法/字段是公共/可访问的,如果不是,则使用反射的setAccessible(true)来确保它可以被设置。
在Web MVC中,创建了一个AbstractPropertyAccessor实例,并将HttpRequest的参数映射传递给AbstractPropertyAccessor #setPropertyValues。
调用之后,java对象将填充地图中的任何内容