【发布时间】:2014-05-17 23:29:20
【问题描述】:
我开始了解当用户在 Spring MVC Web 应用程序的上下文中请求某个 URL 时,后台会发生什么。 但我无法弄清楚数据绑定何时以及如何发生,即输入表单的字段与模型对象之间的映射以及稍后在相关处理程序方法中注入该对象。
任何人都知道隐含了哪些类和方法,以及这些在文档中的什么位置出现?
【问题讨论】:
标签: java spring spring-mvc data-binding
我开始了解当用户在 Spring MVC Web 应用程序的上下文中请求某个 URL 时,后台会发生什么。 但我无法弄清楚数据绑定何时以及如何发生,即输入表单的字段与模型对象之间的映射以及稍后在相关处理程序方法中注入该对象。
任何人都知道隐含了哪些类和方法,以及这些在文档中的什么位置出现?
【问题讨论】:
标签: java spring spring-mvc data-binding
例如,如果您将代表SomeBean 的数据发布到此处理程序:public void (SomeBean someBean),Spring 4 会发生以下情况。
InvocableHandlerMethod 将遍历方法的参数,并要求 HandlerMethodArgumentResolverComposite 实例解析每个参数的值。
HandlerMethodArgumentResolverComposite 会询问HandlerMethodArgumentResolvers 是否支持给定的参数。如果支持该参数,则该参数用于解析值。
ModelAttributeMethodProcessor 将支持给定参数 (SomeBean) 并将尝试解析它的值。
在 resolveArgument 方法内部,ModelAttributeMethodProcessor 将实例化参数类型的目标对象。
然后它会调用WebDataBinderFactory来创建一个WebDataBinder,负责将请求绑定到目标对象。
一旦绑定,目标将被返回并作为处理程序方法的参数提供。
附:而不是文档,您应该阅读源代码。
【讨论】: