@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"; }
相关推荐
通过ModelAndView、Map与Model、@SessionAttributes和@ModelAttribute注解来处理模型数据;其中,@ModelAttribute是重点,说明其运行流程并进行代码分析,最终给出SpringMVC目标方法的POJO类型参数的入参全过程,并...
• @ModelAttribute • @Cacheable • @CacheFlush • @Resource • @PostConstruct • @PreDestroy • @Repository • @Component (不推荐使用) • @Scope • @SessionAttributes • @InitBinder
访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析...
访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 ...
模型数据类型 ...– @SessionAttributes: 将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性 – @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中。
样本SpringMVC Spring MVC表单-验证,数据绑定,验证Spring注释-@ RequestParam,@ PathVariable,@ ModelAttribute,@ SessionAttributes Spring安全Spring国际化Spring异常处理Spring基本REST服务用户-hsetpaing...
RequestParam 注解、RequestHeader 注解、CookieValue 注解、使用POJO作为参数(属性与页面自动匹配及级联)、使用Servlet原生API作为参数、处理模型数据(ModelAndView、Map、SessionAttributes 注解)、...
本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&...与页面自动匹配及级联)、使用Servlet原生API作为参数、处理模型数据(ModelAndView、Map、SessionAttributes注解)、ModelAttribute注解如...
SSM笔记-处理模型数据 处理模型数据之ModelAndView + 处理模型数据之ModelAttribute + 处理模型数据之 SessionAttributes
使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...
使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................
org.springframework.web.bind.annotation.SessionAttributes.class org.springframework.web.bind.support.ConfigurableWebBindingInitializer.class org.springframework.web.bind.support....