springmvc的ServletModelAttributeMethodProcessor解析

标签:
itjavaspringspringmvc |
分类: spring技术 |
当handler的参数类型为自定义的实体类类型或者添加了@ModelAttribute注解,ServletModelAttributeMethodProcessor会对参数进行解析绑定。
http://s12/mw690/004dzziXzy7lfJpQ6PF2b&690
判断有没有@ModelAttribute注解,或者不是Java基本数据类型(Date、Number、Enum等)。
判断有没有@ModelAttribute注解,或者不是Java基本数据类型(Date、Number、Enum等)。
看具体的handler:
另外一种用法是添加@ModelAttribute注解,对于这个的用法目前还不是太清晰:
http://s4/mw690/004dzziXzy7lfK4iPJx03&690
需要写一个方法,添加@ModelAttribute注解,请求会先进入这个方法,然后在进入对应的handler,这个时候添加@ModelAttribute的参数就可以获取到preTest12()方法里设置的值。
需要写一个方法,添加@ModelAttribute注解,请求会先进入这个方法,然后在进入对应的handler,这个时候添加@ModelAttribute的参数就可以获取到preTest12()方法里设置的值。
再来看resolveArgument()方法:
http://s12/mw690/004dzziXzy7lg7JvjED9b&690
http://s1/mw690/004dzziXzy7lg7NGafC50&690
通过构造方法反射得到参数的实例。
http://s1/mw690/004dzziXzy7lg7NGafC50&690
通过构造方法反射得到参数的实例。
再回到resolveArgument()方法:
http://s3/mw690/004dzziXzy7lg7UsEWC12&690
http://s11/mw690/004dzziXzy7lg7Y68quba&690
http://s3/mw690/004dzziXzy7lg80RsaKe2&690
http://s4/mw690/004dzziXzy7lg836yCD63&690
最终通过spring bean的注入将http请求参数值注入到handler的实体类中。
http://s11/mw690/004dzziXzy7lg7Y68quba&690
http://s3/mw690/004dzziXzy7lg80RsaKe2&690
http://s4/mw690/004dzziXzy7lg836yCD63&690
最终通过spring bean的注入将http请求参数值注入到handler的实体类中。
ServletModelAttributeMethodProcessor主要解析handler的实体类参数,将http请求参数映射绑定到实体类对应的属性里。