Spring MVC理解和主要使用的注解详解(3)

<body> <h1>${requestScope.u.uname}</h1> <h1>${sessionScope.u.uname}</h1> </body>

7、@ModelAttribute

该注解有两个用法,一个是用于方法上,一个是用于参数上;

用于方法上时:  通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;

用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于:

A) @SessionAttributes 启用的attribute 对象上;

B) @ModelAttribute 用于方法上时指定的model对象;

C) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中。

用到方法上@ModelAttribute的示例代码: 

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

这种方式实际的效果就是在调用@RequestMapping的方法之前,为request对象的model里put(“account”, Account);

用在参数上的@ModelAttribute示例代码:

@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST) public String processSubmit(@ModelAttribute Pet pet) { }

首先查询 @SessionAttributes有无绑定的Pet对象,若没有则查询@ModelAttribute方法层面上是否绑定了Pet对象,若没有则将URI template中的值按对应的名称绑定到Pet对象的各属性上。 

@ModelAttribute可以和@SessionAttributes配合在一块使用。可以通过ModelMap中属性的值通过该注解自动赋给指定变量。

示例代码如下:

@Controller @RequestMapping("/user") @SessionAttributes({"u","a"}) publicclass UserController { @RequestMapping(params="method=list1") public String list1(ModelMap map) { System.out.println("HelloController.handleRequest()"); map.addAttribute("u","光头强"); return"index"; } @RequestMapping(params="method=list2") public String list2(@ModelAttribute("u")String username ,ModelMap map) { System.out.println("HelloController.handleRequest()"); System.out.println(username ); return"index"; } }

上述先调用list1方法,再调用list2方法。 

Spring MVC+Spring3+Hibernate4开发环境搭建

Spring MVC整合Freemarker基于注解方式

基于注解的Spring MVC简单介绍

Spring MVC 框架搭建及详解

Spring MVC使用Cron表达式的定时器

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cd240bf160ad13a7ea84bb4d0998c0d4.html