如何Filter ModelAttribute
时间: 2024-10-09 10:07:01 浏览: 16
在Spring MVC框架中,`ModelAttribute`是一种数据绑定机制,用于将HTTP请求中的数据绑定到控制器方法的参数上。如果你想过滤或验证`ModelAttribute`中的某些属性,你可以自定义一个`ModelValidator`或使用`@Validated`注解结合`Validator`接口。
1. 自定义`ModelValidator`:
- 创建一个实现了`ModelValidator<T>`接口的类,其中`T`是你想要验证的`ModelAttribute`类型。
```java
public class MyCustomValidator implements ModelValidator<MyModelAttribute> {
@Override
public void validate(ModelAttribute attribute, Errors errors) {
MyModelAttribute modelAttr = (MyModelAttribute) attribute.getValue();
// 过滤或验证modelAttr中的特定字段
if (!isValid(modelAttr.getField())) {
errors.rejectValue("field", "invalid.field");
}
}
}
```
- 将你的`ModelValidator`注册到Spring MVC的`ValidatorRegistry`中,然后在需要的地方应用它。
2. 使用`@Validated`注解:
- 在模型类上添加`@Validated`注解,并声明你需要验证的字段,如`javax.validation.constraints.NotNull`等。
```java
@Validated
public class MyModelAttribute {
private String fieldToFilter;
// getter and setter methods
}
```
- 控制器方法接收`MyModelAttribute`作为参数,在方法前加上`@ModelAttribute`注解。
阅读全文