ModelAttribute注解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wangtongxuexueit/article/details/102777060

作用:

该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
​ 出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以 修饰有具体返回值的方法。
​ 出现在参数上,获取指定的数据给参数赋值。
*

*应用场景

:**
​ 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。
​ 例如:
​ 我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

我们可以把这个@ModelAttribute 特性,应用在 BaseController 当中,所有的 Controller 继承BaseController,即可实现在调用 Controller 时,先执行@ModelAttribute 中的方法。这样一来
一些公共的内容就可以再调用方法之前帮助我们进行初始化。例如:获取 request,response,
session 等 servletAPI 对象,获取 session 中的用户信息等。

代码举例

public class BaseController {

   protected HttpServletRequest request;
   protected HttpServletResponse response;
   protected HttpSession session;
   //用户
   //private User loginUser;

   /**
    *  @ModelAttribute
    *         配置到方法上,在执行此控制器所有方法之前执行的方法
    *         返回值为空 : void
    *         参数:配置参数规则和控制器方法一模一样
    */
   @ModelAttribute
   public void init(HttpServletRequest request,HttpServletResponse response,HttpSession session) {
      this.request = request;
      this.response = response;
      this.session= session;
      //loginUser = (User)session.getAttribute();
   }
}

猜你喜欢

转载自blog.csdn.net/wangtongxuexueit/article/details/102777060