版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
作用:
该注解是 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();
}
}