当前位置: 首页 > 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: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 〔开发系列〕一次关于小程序开发的深度总结
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java程序员幽默爆笑锦集
  • php面试题 汇集2
  • React-redux的原理以及使用
  • Spring Boot MyBatis配置多种数据库
  • Spring-boot 启动时碰到的错误
  • Sublime text 3 3103 注册码
  • vue总结
  • 大整数乘法-表格法
  • 规范化安全开发 KOA 手脚架
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 离散点最小(凸)包围边界查找
  • 聊聊flink的TableFactory
  • 数据可视化之 Sankey 桑基图的实现
  • 项目实战-Api的解决方案
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​linux启动进程的方式
  • # Java NIO(一)FileChannel
  • $NOIp2018$劝退记
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)STL算法之遍历容器
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二)正点原子I.MX6ULL u-boot移植
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • *p++,*(p++),*++p,(*p)++区别?
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Mobi域名介绍
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net Memory Profiler的使用举例
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • :如何用SQL脚本保存存储过程返回的结果集
  • @基于大模型的旅游路线推荐方案