当前位置: 首页 > news >正文

@ModelAttribute 注解

最近用到了@ModelAttribute,就顺便学习下。

 

  •  在方法级别使用时,比如

1 @ModelAttribute
2 public void addAttributes(Model model) {
3     model.addAttribute("msg", "hello world!");
4 }
在这个例子中,我们展示了一个方法,它将一个msg属性添加到Model中。
通常,在调用方法前,SpringMvc会始终先调用该方法,类似与我们用到的拦截器,过滤器。优先级别在方法中最高。(注意,只在同一个controller时)
 
1 @ModelAttribute("user1")
2 public void addAttributes(User user) {
3    
4 }
在这里,ModelAttribute有了一个user1,然后参数是user,所以在Model中会存在2个对象,user和user1
 
  • 在方法中,

 

  
1 @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
2 public String submit(@ModelAttribute("employee") Employee employee) {
3  
4     return "employeeView";
5 }
参数会中模型中查找,也就是比如我们提交一个form表单时,可以使用这种方法来获取一个对象,比如会先在model中先获取employee的对象,如果获取不到就会先通过反射来实例化,然后从request里面的值来set实例化的对象,然后把这个对象添加到model中
  • 在类级别中

  • 1 @Controller  
    2 @RequestMapping("user")  
    3 @SessionAttributes("test")  
    4 public class TestController {

      }
    在类级别中使用@SessionAttributes,作用是在controller中共享这个model,直到org.springframework.web.bind.support.SessionStatus#setComplete会清空session值,或者是session过期

 

  

 1 @Controller
 2 @RequestMapping("user")
 3 @SessionAttributes("test")
 4 public class TestController {
 5 
 6     @RequestMapping(value = "test1")
 7     public String test1(HttpServletRequest request) {
 8         request.getSession().setAttribute("test",user);  
 9         
10     }
11 
12     @RequestMapping(value = "test2")
13     public String test2(@ModelAttribute("test") User user,SessionStatus sessionStatus) {
14         return null;
15     }
16 }

 

在这个代码中,会先调用test1再调用test2,因为在test1中设置test,因为使用了@SessionAttributes("test"),会确保test先存在
 
 

转载于:https://www.cnblogs.com/haoming1100/articles/8747461.html

相关文章:

  • 非常全的VsCode快捷键
  • 从1.6W名面试者中收集的Java面试题精选汇总(内附知识脑图)
  • BZOJ 4555: [Tjoi2016Heoi2016]求和 (NTT + 第二类斯特林数)
  • Intellij IDEA 生成返回值对象快捷键
  • python中@classmethod @staticmethod区别
  • Unity3d和Android之间互相调用
  • 初涉三分法
  • 关于inodes占用100%解决方法
  • 电商系统处理
  • 20154307《网络对抗》Exp4 恶意代码分析
  • Mac下Nginx访问目录,出现403 Forbidden
  • mac 安装 tomcat 配置
  • 聚类算法
  • 20165215 结对编程——四则运算第一周
  • E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。...
  • 08.Android之View事件问题
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Apache的80端口被占用以及访问时报错403
  • cookie和session
  • java 多线程基础, 我觉得还是有必要看看的
  • jQuery(一)
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • vue2.0项目引入element-ui
  • 给第三方使用接口的 URL 签名实现
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 诡异!React stopPropagation失灵
  • 后端_MYSQL
  • 计算机常识 - 收藏集 - 掘金
  • 技术:超级实用的电脑小技巧
  • 前端自动化解决方案
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微服务核心架构梳理
  • C# - 为值类型重定义相等性
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 透过事物看本质的能力怎么培养?
  • #每日一题合集#牛客JZ23-JZ33
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (02)vite环境变量配置
  • (9)STL算法之逆转旋转
  • (ros//EnvironmentVariables)ros环境变量
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (剑指Offer)面试题34:丑数
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (循环依赖问题)学习spring的第九天
  • (译)2019年前端性能优化清单 — 下篇
  • (转)大道至简,职场上做人做事做管理
  • .NET MVC之AOP
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net6 Api Swagger配置
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接