标签:private 数据库 test 运行流程 bubuko alt 表单 for 字符串
1.需求:
index.jsp <!-- 模拟修改操作 1.原始数据:1,Tom,123456,tom@qq.com,25,BJ 2.要求密码不能被修改 3.表单回显,模拟操作直接在表单填写对应的属性值 --> <form action="springmvc/testModelAttribute" method="POST"> <input type="hidden" name="id" value="1"/> username:<input type="text" name="username" value="Tom" /> <br> email:<input type="text" name="email" value="tom@qq.com"/> <br> age:<input type="text" name="age" value="25"/> <br> <input type="submit" value="submit" /> </form> 测试代码: @RequestMapping("/springmvc") @Controller public class SpringMVCTest { private static final String SUCCESS = "success"; @RequestMapping("/testModelAttribute") public String testModelAttribute(User user){ System.out.println("修改:"+user); return SUCCESS; } } 结果: 修改:User [id=1, username=Tom, password=null, email=tom@qq.com, age=11111]
2.解决需求:
测试代码: @RequestMapping("/springmvc") @Controller public class SpringMVCTest { private static final String SUCCESS = "success"; @ModelAttribute public void getUser(@RequestParam(value="id",required=false) Integer id, Map<String,Object> map){ if(id!=null){ //模拟从数据库中获取对象,把对象放进map里面 User user = new User(1, "Tom", "123456", "tom@qq.com", 25); System.out.println("从数据库中获取一个对象"+user); map.put("user", user); } } @RequestMapping("/testModelAttribute") public String testModelAttribute(User user){ System.out.println("修改:"+user); return SUCCESS; } } 结果: 从数据库中获取一个对象User [id=1, username=Tom, password=123456, email=tom@qq.com, age=25] 修改:User [id=1, username=Tom, password=123456, email=tom@qq.com, age=22222]
3.总结运行流程:
1. @ModelAttribute注释修饰的方法:从数据库中取出对象,把对象放入到了map中,键为user;
2. SpringMVC从map中取出user对象,并把表单的请求参数赋给该User对象的对应属性;
3. SpringMVC把上述对象传入目标方法的参数;
4.注意:
1. 在@ModelAttribute修饰的方法中,放入到map时的键需要和目标方法入参类型的第一个字母小写的字符串一致;
2.
SpringMVC----ModelAttribute注解使用
标签:private 数据库 test 运行流程 bubuko alt 表单 for 字符串
原文地址:https://www.cnblogs.com/yikuan-919/p/9737970.html