@ModelAttribute和@RequestAttribute
时间: 2024-01-05 22:03:43 浏览: 122
详解SpringMVC——接收请求参数和页面传参
`@ModelAttribute` 和 `@RequestAttribute` 是用于在 Spring MVC 中处理请求参数的注解,但它们的使用场景和功能略有不同。
1. `@` 注解:
- 用于将请求参数绑定到方法参数或控制器的模型属性。
- 可以用在方法参数上,表示将请求参数绑定到方法参数上。
- 可以用在控制器的方法上,表示将请求参数绑定到模型属性上。
- 默认情况下,Spring MVC 会根据请求参数的名称自动匹配并绑定到方法参数或模型属性。
- 可以通过指定请求参数的名称来显式地绑定。
- 在绑定请求参数时,支持数据类型转换和验证。
2. `@RequestAttribute` 注解:
- 用于从请求中获取已经存储在某个作用域中的属性值。
- 可以用在方法参数上,表示从请求中获取指定名称的属性值。
- 通常在拦截器或过滤器中将属性存储到请求中,然后在控制器中使用 `@RequestAttribute` 注解获取这些属性值。 - `@RequestAttribute` 注解需要指定属性的名称。
示例代码如下:
```java
@GetMapping("/example")
public String exampleMethod(@ModelAttribute("modelAttr") ModelAttributeClass modelAttr, @RequestAttribute("reqAttr") String reqAttr) {
// 处理请求
// ...
}
```
在上述代码中,`@ModelAttribute` 注解用于绑定请求参数到 `ModelAttributeClass` 类型的方法参数 `modelAttr` 上,并指定了模型属性的名称为 "modelAttr"。`@RequestAttribute` 注解用于从请求中获取名为 "reqAttr" 的属性值,并将其绑定到方法参数 `reqAttr` 上。
需要注意的是,`@ModelAttribute` 注解一般用于处理请求参数的绑定,而 `@RequestAttribute` 注解用于从请求中获取已存储的属性值。
希望这个解答对你有所帮助!如果还有其他问题,请随时提问。
阅读全文