@ModelAttribute
- 1.@ModelAttribute注释在方法上
- 1.1 @ModelAttribute加再void方法上
@ModelAttribute public void setCommonData(@RequestParam String param,Model model){ model.addAttribute("message", param); } @RequestMapping(value="/hello") public String hello(){ return "attributes"; }
在执行/hello所在Controller中的方法之前会先执行setCommonData方法,并且会将请求参数/hello?param=hello解析到message中。这个用法比较适合用于设置公共数据。
1.2@ModelAttribute加在返回具体对象的方法上
@ModelAttribute public User fetchUser(){ return new User(); }
这时,虽然model的属性名没有直接指定,但是默认根据返回的对象类型隐式给出。如上,返回为User对象,则model的属性名为user,对应属性对象为new User();
1.3 上面两种情况的组合使用方法
@ModelAttribute("message") public String setCommonData(@RequestParam String param,Model model){ //model.addAttribute("message", param); return param; } @RequestMapping(value="/hello") public String hello(){ return "attributes"; }
1.4 @RequestMapping与@ModelAttribute一起加在方法上
@RequestMapping(value="/attributes") @ModelAttribute("message") public String attributes(){ return "helloattribute"; }
这时,返回值就不是一个View名称了 而是model的属性值。视图名称将会根据/attributes生成
- 2.@ModelAttribute注释在属性值上
- 2.1 @ModelAttribute注释在一个方法的参数上
@ModelAttribute("user") public User setCommonData(@RequestParam String param,Model model){ return new User("Rose","123",23); } @RequestMapping(value="/onParam") public String onParam(@ModelAttribute("user") User user){ user.setUsername("Tom"); return "attributes"; }
user可以从setCommonData中获取 也可以通过url里的参数获取(此时需要user具有无参构造器)
此时,如果在Controller类上有@SessionAttributes("user")
则user的scope为session否则其scope为request。
默认情况下,ModelMap中的属性的scope是request级别的。也即,一个request请求结束,ModelMap中的属性将会被销毁。如果希望将ModelMap中的属性在多个请求中共享,我们需要使用@SessonAttributes注解来完成。
@SessionAttributes
使用方法:
@Controller @RequestMapping(value="/attributes") @SessionAttributes("user")//将user对象透明地加入到Session中 public class Attributes {
其实,
@SessionAttributes允许指定多个属性。如@SessionAttributes({"attr1","attr2"})
@SessionAttributes允许通过属性类型指定要Session化的ModelMap属性。如@SessionAttributes(types=User.class)也可指定多个@SessionAttributes(types={User.class,Company.class})
也可以联合属性名和属性类型来指定@SessionAttributes(types={User.class,Company.class},value={"attr1","attr2"})
只要我们不调用SessionStatus的setComplete方法,这些对象会一直保存在Session中。
@RequestMapping(value="/complete") public String complete(SessionStatus sessionStatus){ sessionStatus.setComplete();//清除@SessionAttributes在Session中存储的对象信息 return "complete"; }
相关推荐
`@ModelAttribute`与`@SessionAttributes`常常一起使用。`@ModelAttribute`主要用于将Session中的属性绑定到控制器方法的参数上。当我们在控制器方法的参数上使用`@ModelAttribute`(如`public String ...
`@ModelAttribute`通常与`@RequestMapping`一起使用,以确保在处理请求时,所需的数据已经准备就绪。 1. **@ModelAttribute 注解的使用** 当一个方法被`@ModelAttribute`标记时,Spring MVC会在调用实际的处理...
通过ModelAndView、Map与Model、@SessionAttributes和@ModelAttribute注解来处理模型数据;其中,@ModelAttribute是重点,说明其运行流程并进行代码分析,最终给出SpringMVC目标方法的POJO类型参数的入参全过程,并...
当控制器方法返回一个`ModelAndView`对象时,该对象中的模型数据会被放入`Request`域对象中,并与视图一同传递给前端显示。 **示例代码:** ```java @RequestMapping("/testModelAndView") public ModelAndView ...
SpringMVC框架提供了多种方式来处理模型数据,包括使用ModelAndView、Map及Model、@SessionAttributes和ModelAttribute等。下面我们将详细介绍SpringMVC处理模型数据ModelAndView过程。 一、使用ModelAndView处理...
当我们在一个控制器方法的参数上使用`@ModelAttribute`时,Spring MVC会尝试从请求中获取与注解参数名相匹配的数据,例如表单提交的数据或URL路径变量。然后,这些数据会被用来初始化或者更新一个模型实体对象。例如...
访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析...
5. **@SessionAttributes 和 @ModelAttribute** `@SessionAttributes` 注解用于声明需要在 HTTP 会话中存储的属性,而 `@ModelAttribute` 通常用于从请求参数或会话中创建或更新模型对象。例如: ```java @...
访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 ...
SpringMVC 3.1.1版本的源码中,Controller接口和相关注解(如@RequestMapping、@SessionAttributes、@ModelAttribute)的实现提供了上述功能的基础。通过阅读源码,我们可以更深入地理解这些特性的内部工作原理。 ...
在Java Web开发中,Spring框架提供了`@SessionAttributes`和`@ModelAttribute`注解,可以结合自定义拦截器实现防重复提交。 1. **@SessionAttributes**:这个注解用于将模型属性存储在Session中。当我们处理表单...
它通常与`@ModelAttribute`配合使用,`@ModelAttribute`注解用于将方法的返回值或参数绑定到模型(Model)中,以便在视图解析时可用。 ### `@ModelAttribute` 的作用 `@ModelAttribute` 有以下两个主要用途: 1. **...
本文主要围绕"SSM笔记-处理模型数据"这一主题,深入探讨ModelAndView、ModelAttribute以及SessionAttributes在SpringMVC中的应用。 首先,我们来理解ModelAndView。在SpringMVC中,Controller处理完业务逻辑后,...
15. `@ModelAttribute("attrName")`:配合`@SessionAttributes`使用,可以从HttpSession中获取或向其中添加属性。 通过深入理解并熟练运用这些注解,开发者可以有效地构建和维护Spring MVC应用程序,提高开发效率和...
- `@ModelAttribute` 通常与表单绑定和模型属性结合使用,它可以从请求参数中获取数据并创建一个对象实例,或者将对象添加到模型中。例如: ```java @PostMapping("/submitForm") public String submitForm(@...
常与 JSON 或 XML 数据交换配合使用。 8. `@SessionAttributes`:用于在 HTTP session 中存储数据,以便在多个请求间共享。例如: ```java @Controller @SessionAttributes("cart") public class ...
- `@ModelAttribute` 用于将请求参数绑定到一个对象,常用于表单数据的处理。此外,它还可以用于方法参数的预处理,如校验或填充默认值。 8. **@SessionAttributes** - `@SessionAttributes` 注解用于在HTTP会话...
- `@ModelAttribute`和`@SessionAttributes`:在Spring MVC中,`@ModelAttribute`用于将请求参数绑定到模型对象,`@SessionAttributes`则用于在HTTP会话中存储模型对象。 - `@PathVariable`:从URL路径中提取参数...
1. `@ModelAttribute`:用于绑定请求参数到模型对象。通常与`@RequestMapping`结合使用,将请求参数转化为模型对象。 2. `@SessionAttributes`:用于指定需要存储在HttpSession中的模型属性,可以在多个请求间共享...
样本SpringMVC Spring MVC表单-验证,数据绑定,验证Spring注释-@ RequestParam,@ PathVariable,@ ModelAttribute,@ SessionAttributes Spring安全Spring国际化Spring异常处理Spring基本REST服务用户-hsetpaing...