Spring 2.5如何将传入的请求数据映射到ModelAttribute命令?

时间:2009-01-06 21:10:49

标签: spring-mvc

我使用的是Spring 2.0,现在我使用的是Spring 2.5,就Web控制器而言,Spring 2.5让生活变得非常简单。这个问题一直在我脑海中浮现,在2.0中我们必须设置命令类,因此用于为我们填充该命令对象的AbstractFormController。在Spring 2.5中我们不这样做,所以如何知道要使用哪个类?它取决于我们注释@ModelAttribute(“command”)的参数类型吗?

如果是,那么请让我知道任何提供确切机制的“Utils”类,其中我可以传递HttpRequest和类名(或Class对象),这将返回我填充的对象!

希望你有我的问题。

提前致谢。

1 个答案:

答案 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对象将填充地图中的任何内容