SpringMVC注解之@ModelAttribute

本文详细解析了SpringMVC框架中@ModelAttribute注解的使用方法及其在处理请求参数和对象填充过程中的作用,包括如何通过该注解实现数据库对象的预加载和与请求参数的绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 由@ModelAttribute标记的方法,会在目标方法执行之前被SpringMVC调用。
  2. @ModelAttribute注解也可以用来修饰目标方法POJO类型的入参,其value属性值有如下作用:
    (1)SpringMVC会使用value属性值在implicitModel中查找对应的对象,若存在则会直接传入到目标方法的入参中;
    (2)SpringMVC会以value为key,POJO类型的对象为value,存入到request中。
@ModelAttribute
public void getUser(@RequestParam(value="id",required=false) Integer id,Map<String,Object> map) {
	System.out.println("modelAttribute method");
	if (id != null){
		//模拟从数据库中获取对象
		User user = new User(1,"Tom","123456","tom@qq.com",12);
		System.out.println("从数据库中获取一个对象:" + user);
		map.put("user",user);
	}
}
/**
 * 运行流程:
 * 1.执行@ModelAttribute注解修饰的方法:从数据库中取出对象,把对象放入Map中,键为:user;
 * 2.SpringMVC从Map中取出user对象,并把表单的请求参数赋给该User对象的对应属性;
 * 3.SpringMVC把上述对象传入目标方法的参数。
 */
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user) {
	System.out.println("修改:" + user);
	return SUCCESS;
}

注意: 在@ModelAttribute修饰的方法中,放入map中的键需要和目标方法入参类型的第一个字母小写的字符串一致;若不一致,则需用@ModelAttribute修饰目标方法的入参,代码如下:

@ModelAttribute
public void getUser(@RequestParam(value="id",required=false) Integer id,Map<String,Object> map) {
	System.out.println("modelAttribute method");
	if (id != null){
		//模拟从数据库中获取对象
		User user = new User(1,"Tom","123456","tom@qq.com",12);
		System.out.println("从数据库中获取一个对象:" + user);
		map.put("abc",user);
	}
}

@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("abc") User user) {
	System.out.println("修改:" + user);
	return SUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值