@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中

  • 在类级别中
  • 在类级别中使用@SessionAttributes,作用是在controller中共享这个model,直到org.springframework.web.bind.support.SessionStatus#setComplete会清空session值,或者是session过期
1 @Controller  
2 @RequestMapping("user")  
3 @SessionAttributes("test")  
4 public class TestController {

  }
 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先存在

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏爱撒谎的男孩

Springmvc之向JSP页面提供数据(request,session)

3534
来自专栏Spring相关

第3章—高级装配—条件化的Bean

通过活动的profile,我们可以获得不同的Bean。Spring 4提供了一个更通用的基于条件的Bean的创建方式,即使用@Conditional注解。

912
来自专栏WindCoder

RequestParam与RequestBod等参数注解简析

该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded和multipart/form-data编码的...

5411
来自专栏面朝大海春暖花开

@Autowired和@Resource的区别

@Autowired 这个是spring的注解    org.springframework.beans.factory.annotation.Autowire...

1.9K2
来自专栏Java3y

SpringMVC【开发Controller】详解

前言 本文主要是讲解在Controller中的开发,主要的知识点有如下: 编码过滤器 使用注解开发 注解@RequestMapping详解 业务方法接收参数 字...

3508
来自专栏技术墨客

Spring核心——@Configuration与混合使用

在介绍Spring核心容器的系列文章中已经多次出现这个注解,从使用的角度来说可以把他理解为XML配置中的<beans>标签,但是两者肯定是不等价的。

1283
来自专栏高性能服务器开发

linux服务器开发实战(一)——排查Flamingo服务端一个崩溃的问题

我的flamingo服务器(关于flamingo可以参看这里)最近在杀掉进程(如使用Ctrl + C或者kill + 程序pid)偶尔会出现崩溃问题,虽然这个问...

3271
来自专栏Java 技术分享

SpringMVC(一)

1222
来自专栏JAVA技术站

SpringBoot中Configure注解和Bean注解的使用

  Configure不加参数,仅声明为配置类,加了参数代表该类为实例,实例名称为参数名

6533
来自专栏JavaEdge

使用Spring Data JPA访问关系型数据库添加数据库和jpa依赖定义实体对象创建对象访问方法总结

我们将定义一个实体对象UserApply并将其存储到关系型数据库中,并使用JPA注解:

962

扫码关注云+社区

领取腾讯云代金券