SpringMVC标签之ModelAttribute
来源:互联网 发布:阿里巴巴e助手软件 编辑:程序博客网 时间:2024/06/05 20:46
首先要了解@ModelAttribute标签使用的场景:
比如我们在对表单数据进行修改操作的时候,有一些值是不容许被修改的(比如录入时间),从前台表单只对对象中部分属性值进行赋值,这样进行的update操作会把没有被赋值的属性就赋值为null,这样的操作是错误的。
为了解决这一问题,我们先将对象从数据库中查出,然后再进行从前端页面赋值,这样没有被赋值的属性依然是数据库原来的值,这样进行update操作就不会有问题。
@ModelAttribute标签就能帮我们解决这个问题,看示例:
前端页面代码:
<!-- 模拟修改操作 1. 原始数据为: 1, Tom, 123456,tom@atguigu.com,12 2. 密码不能被修改. 3. 表单回显, 模拟操作直接在表单填写对应的属性值 --> <form action="${pageContext.request.contextPath}/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@haha.com"/> <br> age: <input type="text" name="age" value="12"/> <br> <input type="submit" value="Submit"/> </form>
有 @ModelAttribute 标记的方法:
/** * 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用! * 2. @ModelAttribute 注解也可以来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下的作用: * 1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中. * 2). SpringMVC 会以 value 为 key, POJO 类型的对象为 value, 存入到 request 中. */@ModelAttributepublic void getUser(@RequestParam(value="id",required=false) Integer id, Map<String, Object> map){ System.out.println("modelAttribute 方法"); if(id != null){ //模拟从数据库中获取对象 User user = new User(1, "Tom", "123456", "tom@haha.com", 12); System.out.println("从数据库中获取一个对象: " + user); map.put("user", user); }}
目标方法:
/** * 运行流程: * 1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user * 2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性.这里没有赋值的属性还是数据库中的值. * 3. SpringMVC 把上述对象传入目标方法的参数. *注意:如果目标方法的入参没有用@ModelAttribute修饰, 在 @ModelAttribute 修饰的方法中, 放入到 Map 时的键需要和目标方法入参类型的第一个字 母小写的字符串一致! **/ @RequestMapping("/testModelAttribute")public String testModelAttribute(@ModelAttribute("user") User user){ System.out.println("目标方法"); System.out.println("修改: " + user); return SUCCESS;}
运行结果:
从数据库中获取一个对象: User [id=1, username=Tom, password=123456, email=tom@haha.com, age=12]修改: User [id=1, username=Tom, password=123456, email=tom@haha.com, age=15]
1 0
- SpringMVC标签之ModelAttribute
- springMVC之@ModelAttribute
- SpringMVC 之@ModelAttribute
- SpringMVC注解之@ModelAttribute
- springmvc之@modelAttribute
- springMVC注解之 @ModelAttribute
- springmvc注解之@ModelAttribute
- SpringMVC之@ModelAttribute学习
- springMVC之ModelAttribute
- SpringMVC之@ModelAttribute
- SpringMVC之ModelAttribute注解
- 学习SpringMVC(八)之ModelAttribute
- SpringMVC 之 @ModelAttribute&OOP处理
- SpringMVC @ModelAttribute
- springmvc @modelAttribute
- SpringMVC---@ModelAttribute
- SpringMVC学习之@ModelAttribute运用详解
- SpringMVC学习之@ModelAttribute运用详解
- 数据库制表
- 使用Banner实现图片的轮番显示的效果,替换ViewPager + CirclePagerIndicator
- poj2785(折半枚举)
- JSON必知必会
- java程序运行机制和虚拟机(JVM)
- SpringMVC标签之ModelAttribute
- C++编写函数模板的一般方法
- Python机器学习(一)
- Xcode8.1 安装ClangFormat 插件
- python的BaseHTTPServer模块接收post请求
- HDU ACM 1 1016 Prime Ring Problem
- 【Android】杂谈
- UIView+Extension方便在开发时快速修改视图的位置大小
- Android Studio --“Cannot resolve symbol” 解决办法