18.7 @ModelAttribute
18.7 @ModelAttribute
前面谈到Spring MVC
在每次调用请求处理方法时,都会创建Model
类型的一个实例。若打算使用该实例,则可以在方法中添加一个Model
类型的参数。事实上,还可以使用在方法中添加ModelAttribute
注解类型来访问Model
实例。该注解类型也是org.springframework. web.bind.annotation
包的成员。
可以用@ModelAttribute
来注解方法参数
或方法
。带@ModelAttribute
注解的方法会将其输入的或创建的参数对象添加到Model
对象中(若方法中没有显式地添加)。例如,Spring MVC
将在每次调用submitOrder
方法时创建一个Order
实例:
1 |
|
输入或创建的Order
实例将用newOrder
键值添加到Model
对象中。如果未定义键值名,则将使用该对象类型的名称。例如,每次调用如下方法,会使用键值order
将Order
实例添加到Model
对象中:
1 | public String submitOrder( |
@ModelAttribute
的第二个用途是标注一个非请求的处理方法。被@ModelAttribute
注解的方法会在每次调用该控制器类的请求处理方法时被调用。这意味着,如果一个控制器类有两个请求处理方法,以及一个有@ModelAttribute
注解的方法,该方法的调用就会比每个处理请求方法更频繁。Spring MVC
会在调用请求处理方法之前调用带@ModelAttribute
注解的方法。带@ModelAttribute
注解的方法可以返回一个对象或一个void
类型。如果返回一个对象,则返回对象会自动添加到Model
中:
1 |
|
若方法返回void
,则还必须添加一个Model
类型的参数,并自行将实例添加到Model
中。如下面的例子所示:
1 |
|