`
DeepBlueNo
  • 浏览: 1431 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Spring MVC中的@ModelAttribute

阅读更多

@ModelAttribute 绑定请求参数到命令对象

 

@ModelAttribute一个具有如下三个作用:

①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑

定流程,而且自动暴露为模型数据用于视图页面展示时使用;

②暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用

对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping 注解的方法)之前,自动添加

到模型对象中,用于视图页面展示时使用;

③暴露@RequestMapping 方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为

模型数据,用于视图页面展示时使用。

 

一、绑定请求参数到指定对象     

 

Java代码  收藏代码
  1. public String test1(@ModelAttribute("user") UserModel user)  

 只是此处多了一个注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。

 

 

如请求参数包含“?username=zhang&password=123&workInfo.city=bj”自动绑定到user 中的workInfo属性的city属性中。

 

 

Java代码  收藏代码
  1. @RequestMapping(value="/model2/{username}")  
  2. public String test2(@ModelAttribute("model") DataBinderTestModel model)  

URI 模板变量也能自动绑定到命令对象中, 当你请求的URL 中包含“bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&state=blocked”会自动绑定到命令对象上。当URI模板变量和请求参数同名时,URI模板变量具有高优先权。 

 

 

二、暴露表单引用对象为模型数据 

Java代码  收藏代码
  1. /** 
  2.  * 设置这个注解之后可以直接在前端页面使用hb这个对象(List)集合 
  3.  * @return 
  4.  */  
  5. @ModelAttribute("hb")  
  6. public List<String> hobbiesList(){  
  7.     List<String> hobbise = new LinkedList<String>();  
  8.     hobbise.add("basketball");  
  9.     hobbise.add("football");  
  10.     hobbise.add("tennis");  
  11.     return hobbise;  
  12. }  

 

JSP页面展示出来

Java代码  收藏代码
  1. <br>  
  2. 初始化的数据 :    ${hb }  
  3. <br>  
  4.   
  5.     <c:forEach items="${hb}" var="hobby" varStatus="vs">  
  6.         <c:choose>  
  7.             <c:when test="${hobby == 'basketball'}">  
  8.             篮球<input type="checkbox" name="hobbies" value="basketball">  
  9.             </c:when>  
  10.             <c:when test="${hobby == 'football'}">  
  11.                 足球<input type="checkbox" name="hobbies" value="football">  
  12.             </c:when>  
  13.             <c:when test="${hobby == 'tennis'}">  
  14.                 网球<input type="checkbox" name="hobbies" value="tennis">  
  15.             </c:when>  
  16.         </c:choose>  
  17.     </c:forEach>  

 备注:

1、通过上面这种方式可以显示出一个集合的内容

2、上面的jsp代码使用的是JSTL,需要导入JSTL相关的jar包

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

三、暴露@RequestMapping方法返回值为模型数据 

Java代码  收藏代码
  1. public @ModelAttribute("user2") UserModel test3(@ModelAttribute("user2") UserModel user)  

 

大家可以看到返回值类型是命令对象类型,而且通过@ModelAttribute("user2")注解,此时会暴露返回值到模型数据( 名字为user2 ) 中供视图展示使用

 

@ModelAttribute 注解的返回值会覆盖@RequestMapping 注解方法中的@ModelAttribute 注解的同名命令对象

 

转自: http://hbiao68.iteye.com/blog/1948380

分享到:
评论

相关推荐

    Spring MVC 之@ModelAttribute使用.rar

    当`@ModelAttribute`注解在控制器方法的返回值上时,Spring MVC会将返回的对象添加到Model中,以便在视图层中使用。这样,我们可以在视图层通过EL表达式(Expression Language)访问这些对象的属性。 例如,假设...

    Spring3MVC 在JSP中使用@ModelAttribute

    在Spring MVC框架中,`@ModelAttribute`是一个非常关键的注解,它主要用于数据绑定和模型属性的处理。本文将深入探讨在JSP中如何使用`@ModelAttribute`,以及它在实际开发中的应用。 首先,`@ModelAttribute`通常用...

    spring mvc中的@ModelAttribute注解示例介绍

    在Spring MVC框架中,`@ModelAttribute`注解扮演着至关重要的角色,主要用于数据绑定和模型对象的管理。本文将深入探讨`@ModelAttribute`的工作原理、使用场景以及如何通过示例来理解其功能。 首先,`@...

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

    当`@ModelAttribute`注解应用于方法参数时,Spring MVC会尝试从请求中找到匹配的参数值,并将其注入到对应的对象中。例如,如果你有一个`User`类,它包含了`name`和`email`属性,你可以创建一个方法: ```java @...

    [Spring MVC] - ModelAttribute使用.docx

    在Spring MVC框架中,`@ModelAttribute`是一个非常重要的注解,它主要用于数据绑定和模型对象的处理。在本文中,我们将深入探讨`@ModelAttribute`的使用及其在控制器(Controller)中的作用。 首先,`@...

    spring mvc RequestParam与 ModelAttribute异同.docx

    在Spring MVC框架中,`@RequestParam` 和 `@ModelAttribute` 是两种常见的注解,用于从HTTP请求中绑定数据到控制器方法的参数。虽然它们都用于处理请求参数,但它们的作用和使用场景有所不同。 1. **`@RequestParam...

    SpringMVC @ModelAttribute应用

    在Spring MVC框架中,`@ModelAttribute`是一个非常重要的注解,它主要用于数据绑定,帮助开发者在控制器方法中接收和处理请求参数。这篇文章将深入探讨`@ModelAttribute`的应用及其背后的原理。 `@ModelAttribute`...

    java中@ModelAttribute注解的作用

    在Java的Spring MVC框架中,`@ModelAttribute`注解是一个非常关键的元素,它主要用于处理HTTP请求中的数据绑定。在Web应用开发中,当用户通过表单提交数据时,`@ModelAttribute`帮助我们把表单数据与Java对象关联...

    SpringMVCDemo:Spring MVC 框架知识案例

    5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7.Spring MVC 请求转发与请求重定向案例 8.Spring MVC 下载 Excel 文档的需求案例 9.Spring MVC RESTful 风格的请求方式案例 10.Spring + Spring ...

    PNC_Lab04:Ingreso产品@Valid @ModelAttribute和BindingResult。 SpringMVC

    在本实验"PNC_Lab04"中,我们将深入探讨Spring MVC框架中关于数据验证的重要概念,特别是`@Valid`, `@ModelAttribute`以及`BindingResult`。这些元素在开发基于Web的应用程序时起着关键作用,尤其是在处理用户输入并...

    java spring mvc项目,通过URL地址传递对象参数给action.zip

    `@ModelAttribute`是Spring MVC中的一个关键注解,用于绑定请求参数到一个模型对象。当我们希望从URL中获取对象参数时,可以将该注解添加到控制器方法的参数前。 ```java @GetMapping("/users") public String ...

    modelAttribute详解

    - **创建具体实例并存储于Model对象中**:当控制器方法中存在带有`@ModelAttribute`注解的参数时,Spring MVC会创建相应的实例,并以注解中的`value`属性值作为键存入Model对象中,以便于视图层访问这些数据。...

    最全最经典spring-mvc教程

    在这个"最全最经典spring-mvc教程"中,我们可以期待深入探讨Spring MVC的各个方面。 首先,Spring MVC的基础架构包括DispatcherServlet(前端控制器)、Model、View和Controller。DispatcherServlet是整个流程的...

    spring mvc 参数绑定漏洞

    在处理HTTP请求时,Spring MVC 提供了参数绑定功能,将HTTP请求中的参数映射到控制器方法的参数上,使得开发更加便捷。然而,这个特性也可能导致安全问题,特别是参数绑定漏洞。 参数绑定漏洞通常出现在以下情况: ...

    Mastering Spring MVC 4(2015.09)源码

    在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。在这个"Mastering Spring MVC 4(2015.09)源码"中,我们可以深入理解这个框架的核心概念和实际应用。 首先,Spring MVC ...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    在Spring MVC中,每个请求都会经过DispatcherServlet,这是一个前端控制器,它会根据请求的URL和配置的映射规则将请求分发到合适的处理器。处理器可以是自定义的Controller类,Controller通过方法注解(如@...

    spring mvc 3_demo

    在这个"Spring MVC 3_demo"中,我们重点探讨的是使用注解来实现Spring MVC 3的应用。注解在Spring MVC中扮演着重要角色,它们简化了配置,提高了代码的可读性和可维护性。 1. **注解驱动的控制器**: 在Spring MVC...

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

    这种方法适用于 JSON 格式的请求体,通过 `@RequestBody` 注解,Spring MVC 可以自动将请求体中的 JSON 数据转换为 Java 对象。 #### 总结 以上介绍了三种解决 Spring MVC 无法直接接收 List 类型参数的方法。这些...

    SPRING MVC 的请求参数获取的几种方法

    在 SPRING MVC 中,可以使用 @ModelAttribute 注解获取 POST 请求的 FORM 表单数据。例如: ```java pojo public class Pojo{ private String a; private int b; } @RequestMapping(method = RequestMethod.POST)...

Global site tag (gtag.js) - Google Analytics