请解释Spring框架中@ModelAttribute注解的主要用途,并说明其在数据绑定和模型属性管理中的作用。
考察说明
考查对Spring MVC中@ModelAttribute注解核心功能的理解,包括方法参数和方法的两种使用场景。
回答思路
- 【回答框架 1】@ModelAttribute注解用于将请求参数绑定到模型对象,并自动添加到Model中供视图使用。作为方法参数时,Spring会先实例化该对象,再按名称匹配请求参数进行填充。
- 【回答框架 2】当注解标注在方法上时,该方法会在控制器处理请求前执行,将返回值或指定属性添加到Model中。返回值默认作为模型属性名,也可通过value属性指定名称。
- 【回答框架 3】典型用法包括表单回显、查询条件绑定和公共数据填充。例如在编辑页面中利用@ModelAttribute接收表单数据,或通过方法级注解在多个请求间共享下拉列表数据。
- 【回答框架 4】需要注意的是,数据绑定默认按属性名匹配,可能涉及类型转换和校验。与@RequestBody不同,@ModelAttribute适用于表单提交或GET请求的查询参数,而@RequestBody用于JSON等请求体。
- 【关键点 1】核心作用是数据绑定与模型属性管理。
- 【关键点 2】参数级别:绑定请求参数到对象并加入Model。
- 【关键点 3】方法级别:预填充Model属性,常用于公共数据或初始化。
- 【关键点 4】与@RequestBody适用场景不同,前者用于表单/查询参数,后者用于JSON。
- 【易错点 1】方法级@ModelAttribute在每次请求前执行,需注意性能消耗。
- 【易错点 2】绑定默认按名称匹配,若请求参数缺失可能得到null或默认值。