SpringMVC-ModelAttribute

(一)应用场景:用户只提交并更新实体Entity内的部分信息,其它信息未更改,此时应该从数据库中查询原对象的所有值,并在提交的基础上,对源对象进行修改后保存。

(二)实践:

1.定义User

public class User {
	private String id;
	private String name;
	public User() {
		super();
	}
	public User(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}
}

2.定义Controller

@Controller
public class UserDao {
	@ModelAttribute
	public void PreSave01(@RequestParam String id,Map<String, Object> map) {
		System.out.println("PreSave01");
		map.put("info","这是根据user的 : ["+id+" ] 信息查到的userInfo! ");
	}
	@RequestMapping(value="/test01")
	public String SaveUser01(@ModelAttribute("info")String info) {
		System.out.println("SaveUser01 test01 info=【"+info+"】");
		return "success";
	}
	@ModelAttribute("userInfo")
	public User PreSave02(@RequestParam String id) {
		User user = new User(id,"Lilith");
		return user;
	}
	@RequestMapping(value="/test02")
	public String SaveUser02(@ModelAttribute("userInfo")User info) {
		System.out.println("SaveUser02 test02 userInfo=【"+info+"】");
		return "success";
	}
	@ModelAttribute("userInfo")
	public void PreSave03(@RequestParam String id, Model model) {
		User user = new User(id,"Lilith");
		model.addAttribute(user);
	}
	@RequestMapping(value="/test03")
	public String SaveUser03(@ModelAttribute("userInfo")User info) {
		System.out.println("SaveUser03 test03 userInfo=【"+info+"】");
		return "success";
	}
	private Object m1;
	private Object m2;
	@ModelAttribute
	public void PreSave04(@RequestParam String id, Map<String,Object> map) {
		User user = new User(id,"Lilith");
		m1=map;
		map.put("uInfo", user);
	}
	@RequestMapping(value="/test04")
	public String SaveUser04(@ModelAttribute("uInfo")User info,Model model) {
		System.out.println("SaveUser04 test03 userInfo=【"+info+"】");
		m2=model;
		System.out.println("m1====m2?"+(m1==m2));
		return "success";
	}
}

3.index页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="test01?id=10001"> 测试ModelAttribute </a><br/>
	<a href="test02?id=10002"> 测试 ModelAttribute("xxx")形式 </a><br/>
	<a href="test03?id=10003"> 测试 传入Model </a><br/>
	<a href="test04?id=10004"> 测试 ModelEq </a><br/>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值