`
wangwengcn
  • 浏览: 175907 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

@ModelAttribute使用详解

阅读更多

1.@ModelAttribute注释方法
    例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
   
    (1)@ModelAttribute注释void返回值的方法
   

@Controller
    public class HelloWorldController {

        @ModelAttribute
        public void populateModel(@RequestParam String abc, Model model) {
           model.addAttribute("attributeName", abc);
        }

        @RequestMapping(value = "/helloWorld")
        public String helloWorld() {
           return "helloWorld";
        }
    }



    这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。
这个例子中model属性名称和model属性对象有model.addAttribute()实现,不过前提是要在方法中加入一个Model类型的参数。
    当URL或者post中不包含次参数时,会报错,其实不需要这个方法,完全可以把请求的方法写成,这样缺少此参数也不会出错

       @RequestMapping(value = "/helloWorld")
        public String helloWorld(String abc) {
           return "helloWorld";
        }


       
    (2)@ModelAttribute注释返回具体类的方法
   

@ModelAttribute
    public Account addAccount(@RequestParam String number) {
       return accountManager.findAccount(number);
    }



 

    这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。
    这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。
   
    (3)@ModelAttribute(value="")注释返回具体类的方法
   

@Controller
    public class HelloWorldController {

        @ModelAttribute("attributeName")
        public String addAccount(@RequestParam String abc) {
           return abc;
        }

        @RequestMapping(value = "/helloWorld")
        public String helloWorld() {
           return "helloWorld";
        }
    }


 


    这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。它无须要特定的参数。
   
    (4)@ModelAttribute和@RequestMapping同时注释一个方法
   

@Controller
    public class HelloWorldController {

        @RequestMapping(value = "/helloWorld.do")
        @ModelAttribute("attributeName")
        public String helloWorld() {
           return "hi";
        }
    }


 


    这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为逻辑视图helloWorld。
    Model属性名称有@ModelAttribute(value=””)指定,相当于在request中封装了key=attributeName,value=hi。
   
2.@ModelAttribute注释一个方法的参数

    (1)从model中获取    
   

@Controller
    public class HelloWorldController {

        @ModelAttribute("user")
        public User addAccount() {
           return new User("jz","123");
        }

        @RequestMapping(value = "/helloWorld")
        public String helloWorld(@ModelAttribute("user") User user) {
           user.setUserName("jizhou");
           return "helloWorld";
        }
    }


 


    在这个例子里,@ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。
    此时如果方法体没有标注@SessionAttributes("user"),那么scope为request,如果标注了,那么scope为session
   
    (2)从Form表单或URL参数中获取(实际上,不做此注释也能拿到user对象)
   
   

@Controller
    public class HelloWorldController {

        @RequestMapping(value = "/helloWorld")
        public String helloWorld(@ModelAttribute User user) {
           return "helloWorld";
        }
    }


 


    注意这时候这个User类一定要有没有参数的构造函数。

分享到:
评论

相关推荐

    spring学习教程之@ModelAttribute注解运用详解

    @ModelAttribute注解运用详解 @ModelAttribute注解是Spring框架中的一种重要注解,用于将模型数据绑定到控制器的方法参数中。下面我们将详细介绍@ModelAttribute注解的使用方法和示例代码。 一、@ModelAttribute...

    modelAttribute详解

    ### @ModelAttribute 详解 在深入探索Spring MVC框架的过程中,我们经常会遇到`@ModelAttribute`这个注解。它在处理HTTP请求时扮演着非常重要的角色。本文将详细介绍`@ModelAttribute`的功能、内部实现机制及其应用...

    spring mvc中注解@ModelAttribute的妙用分享

    文章中提到的创新性使用方式是创建一个基础控制器类(BaseController),在其中利用`@ModelAttribute`注解来初始化`HttpServletRequest`、`ModelMap`和`HttpServletResponse`,这样在子控制器中就可以直接访问这些...

    ModelAttribute注解详细使用.docx

    ### ModelAttribute注解详解 在Spring MVC框架中,`@ModelAttribute`注解是一个非常重要的工具,它主要用于将请求参数绑定到Model对象上。这不仅提高了数据处理的灵活性,还简化了控制器方法的设计。 #### 一、`@...

    SpringMVC ModelAttribute详解.docx

    在Spring MVC框架中,`@ModelAttribute`注解扮演着至关重要的角色,它是数据绑定和模型对象创建的关键。本文将深入探讨`@ModelAttribute`的工作原理及其常见应用场景。 首先,`@ModelAttribute`注解可以用于两个...

    SpringMVC处理模型数据-2.docx

    ### SpringMVC 处理模型数据详解 #### 模型数据类型 在SpringMVC框架中,模型数据是指从控制器传递到视图层的数据。这些数据可以被用来填充页面,或者进行其他业务逻辑处理。SpringMVC提供了多种方式来处理模型...

    SpringBoot_113实用知识库分享

    SpringBoot 提供了多种方式来使用 @ModelAttribute 注解,包括使用 @ModelAttribute 注解来绑定对象、使用 @ModelAttribute 注解来绑定 List 对象等。 11. SpringBoot+Maven 多模块项目的构建、运行、打包实战 ...

    SpringMVC 常用注解类视频详解

    15. `@ModelAttribute("attrName")`:配合`@SessionAttributes`使用,可以从HttpSession中获取或向其中添加属性。 通过深入理解并熟练运用这些注解,开发者可以有效地构建和维护Spring MVC应用程序,提高开发效率和...

    spring MVC中传递对象参数示例详解

    Spring MVC 中传递对象参数示例详解 在 Spring MVC 框架中,传递对象参数是非常常见的操作,然而,很多初学者可能不知道如何正确地传递对象参数,或者不知道 @RequestParam 和 @ModelAttribute 的区别。本文将详细...

    springmvc注解详解

    SpringMVC 注解详解 SpringMVC 是一个基于Java的Web应用程序框架,使用了Model-View-Controller(MVC)模式来分离应用程序的逻辑。SpringMVC提供了许多注解来简化配置和开发过程。下面将详细介绍SpringMVC的注解。 ...

    详解SpringMVC如何进行数据回显

    _SPRINGMVC数据回显机制详解_ 在本文中,我们将详细介绍SpringMVC如何进行数据回显。数据回显是指在SpringMVC中,将数据从控制器传递到视图的过程。在这个过程中,SpringMVC提供了多种机制来实现数据回显,包括模型...

    Spring MVC 学习笔记 十一 data binding

    **Spring MVC 数据绑定详解** 在Web开发中,Spring MVC框架为我们提供了一种高效的数据绑定机制,使得控制器(Controller)能够方便地将用户提交的表单数据与Java对象进行映射,简化了处理HTTP请求和响应的过程。本...

    Spring MVC不能直接接收list类型参数的问题

    ### Spring MVC 无法直接接收 List 类型参数的问题详解 #### 问题背景 在 Web 开发过程中,前后端数据交互是必不可少的一部分。对于基于 Java 的 Spring MVC 框架而言,处理这种交互通常需要理解如何正确地接收前端...

    Java Spring Controller 获取请求参数的几种方法详解

    4. **使用@ModelAttribute注解** 对于POST请求,`@ModelAttribute`注解可以用来将请求的FORM表单数据绑定到一个对象上,该对象通常是Bean: ```java @RequestMapping(value = "/addUser5", method = Request...

    SpringBoot前后端传值.docx

    ### Spring Boot 前后端传值知识点详解 #### 一、@RequestParam 注解 - **定义**:`@RequestParam` 注解主要用于处理 Content-Type 为 `application/x-www-form-urlencoded` 编码的内容,适用于 GET 或 POST 请求...

    SpringMVC实现表单验证功能详解

    SpringMVC实现表单验证功能详解 本文将详细介绍了SpringMVC实现表单验证功能的相关知识点,主要包括表单操作、数据格式化、数据校验、错误提示信息国际化等实用技能。 一、SpringMVC表单验证简介 在Web应用开发中...

    java或Java框架中常用的注解及其作用详解_资料.docx

    - `@ModelAttribute`和`@SessionAttributes`:在Spring MVC中,`@ModelAttribute`用于将请求参数绑定到模型对象,`@SessionAttributes`则用于在HTTP会话中存储模型对象。 - `@PathVariable`:从URL路径中提取参数...

Global site tag (gtag.js) - Google Analytics