springboot 全局处理前端参数进行赋值默认值
时间: 2024-09-09 17:00:54 浏览: 45
Spring Boot 提供了一种全局的方式来处理前端传递的请求参数,并自动给它们设置默认值。这种功能通常通过`@ModelAttribute`注解配合`@Validated`或`WebDataBinderConfigurer`来实现。当你有一个公共的请求模型需要在多个Controller中共享时,可以创建一个公共的`ModelAndViewResolver`,如`ModelAttributeMethodProcessor`。
例如,定义一个公共的参数实体类:
```java
public class CommonRequestParam {
private String name;
private int age = 18; // 设置默认值
// getters and setters...
}
```
然后,在`ApplicationArguments`类中配置全局处理器:
```java
@Configuration
public class GlobalExceptionHandlerConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new ModelAttributeMethodProcessor(CommonRequestParam.class));
}
// 可选:添加校验规则
@Bean
public WebDataBinderConfigurer dataBinderConfigurer() {
return new WebDataBinderConfigurer() {
@Override
protected void configureDataBinder(DataBinder binder) {
binder.registerCustomEditor(String.class, new DefaultStringEditor("", true)); // 非空校验
}
};
}
}
```
当前端请求传入`name`字段未指定时,会自动将`age`字段设置为默认值18。如果需要自定义验证规则,可以在`dataBinderConfigurer`里添加对应的支持。
阅读全文