0

我曾经使用过 Spring 2.0,现在我正在使用 Spring 2.5 当然,就 Web 控制器而言,Spring 2.5 让生活变得非常轻松。这个问题一直在我脑海中浮现,在 2.0 中,我们必须设置命令类,并相应地设置 AbstractFormController 用于为我们填充该命令对象。在 Spring 2.5 中我们不这样做,那么它是如何知道要使用哪个类的呢?它是否取决于我们将 @ModelAttribute("command") 注释为的参数类型?

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

希望你能得到我的问题。

提前致谢。

4

1 回答 1

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

于 2009-01-07T07:22:36.863 回答