概述
我们知道,Spring BeanValidation可以用来校验我们客户的提交的参数对应的Bean对象。但是在很多情况,我们的参数只有一个简单字符串或者是数字型参数(采用@RequestParam注解),要想使用SpringValidation还需要把这简单的参数包装成对象,甚是麻烦。下面我们看下,怎么样才能使@RequestParam注解的参数也可以使用Spring Validatio呢。
方案
- Spring容器注入MethodValidationPostProcessor对象
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
- 1
注意:如果Sping配置文件和SpringMVC配置文件分别独立,需要把这个配置加到SpringMVC配置中
-
使用@Validated注解
在对应的Controller中加上@Validated注解,当然也可以加到独立的请求方法中 -
使用校验注解
@RestController
@Validated
public class TestController {
@RequestMapping("/test")
public String test(@NotBlank(message = "姓名不能为空") @RequestParam("name") String name) {
// .....
return ResponseVO.successWithNoData("ok");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 全局校验异常捕捉
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleValidationException(ConstraintViolationException e){
for(ConstraintViolation<?> s:e.getConstraintViolations()){
return s.getInvalidValue()+": "+s.getMessage();
}
return "请求参数不合法";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
相关推荐
11. **验证**:Spring MVC 集成了 Bean Validation API,允许开发者对模型数据进行校验,通过 @Valid 注解和 ConstraintValidator 实现自定义验证规则。 12. **消息转换**:Spring MVC 提供了 HttpMessageConverter...
3. **Spring Validation**:集成Bean Validation进行数据校验。 4. **MVC拦截器**:自定义拦截器,实现预处理和后处理功能。 综上所述,`spring-webmvc`是Spring MVC的核心,它通过一系列组件和机制提供了强大的...
@ModelAttribute 注解用于将请求参数绑定到方法参数,而 @Valid 注解配合 Validation API 可以进行数据校验。 9. **RESTful 风格**:项目中可能会包含 RESTful 风格的 URL 设计,使用 HTTP 方法(GET、POST、PUT、...
8. **验证**:Spring MVC支持JSR-303/JSR-349 Bean Validation标准,可以对模型对象进行数据校验。 9. **国际化**:通过`ResourceBundleMessageSource`和`LocaleResolver`实现多语言支持。 10. **拦截器**:使用`@...
- Spring MVC 支持 JSR-303/JSR-349 Bean Validation 规范,通过注解进行数据校验。 9. **异常处理(Exception Handling)**: - 可以使用 `@ExceptionHandler` 注解处理特定类型的异常,或配置全局异常处理器。 ...
- **JSR-303/JSR-349 Bean Validation**:Spring MVC支持使用Bean Validation进行参数验证,可以在对象类上添加验证注解,如`@NotNull`, `@Size`等。 ```java public class User { @NotNull private String ...
为了确保请求参数的有效性,我们可以使用JSR-303/JSR-349 Bean Validation标准,配合`@Valid`注解进行验证。Spring MVC会自动调用验证器,并在验证失败时抛出异常。 6. **性能优化** 为了提高性能,可以开启Gzip...
Spring提供了内置的数据校验框架,基于JSR 303/JSR 349(Bean Validation)标准。我们可以通过在bean的属性上添加校验注解来定义验证规则,如`@NotNull`, `@Size`, `@Pattern`等。 ```java public class User { ...
- `@Valid`: 配合JSR-303/JSR-349 Bean Validation标准,进行表单数据的验证。 - `@NotBlank`, `@NotEmpty`, `@Size`, `@Min`, `@Max`: 这些是验证注解,可以对字符串、集合、数值等类型的字段进行约束。 5. **...
- 数据验证:通过JSR-303/JSR-349标准实现Bean Validation,对输入数据进行校验。 6. **异常处理**: - 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常。 - 错误页面配置,比如404、500等错误页面。...
数据验证通常通过JSR-303/JSR-349的Bean Validation实现,可以在控制器方法执行前对输入数据进行校验。 Spring MVC的模型-视图-适配器(MVC)设计模式促进了代码的解耦。适配器(即DispatcherServlet)处理HTTP请求...
- **@Valid**:进行数据校验,结合JSR-303/JSR-349 Bean Validation框架。 - **BindingResult**:获取验证结果,用于显示错误信息。 6. **拦截器** - **HandlerInterceptor**:拦截请求,执行预处理和后处理操作...
- 使用 @Valid 和 javax.validation 注解进行数据校验。 7. **拦截器(Interceptor)** - 定义自定义拦截器,实现 HandlerInterceptor 接口,处理请求前后的逻辑,如登录检查、权限控制等。 - 在 Spring MVC ...
Spring Boot 参数校验方法实例详解 ...Spring Boot 提供了多种方法来实现参数校验,包括使用 JSR-303 Bean Validation API、自定义注解和 Validator 等。开发者可以根据实际情况选择合适的方法来实现参数校验。
- **数据验证**:通过JSR-303/JSR-349 Bean Validation实现模型数据的校验。 6. **异常处理** - **@ExceptionHandler**:在控制器中处理特定的异常。 - **Global Exception Handler**:全局异常处理器,捕获所有...
在处理Bean参数时,我们可以利用Java Bean Validation规范来验证输入数据。首先,我们需要在Bean类中添加校验注解,如`@NotNull`,`@Size`等。然后,在控制器方法中使用`@Validated`或`@Valid`注解来启动验证过程: ...
- **@Validated** 和 **javax.validation**:支持 Java Bean 规范的验证,对输入数据进行校验。 5. **异常处理** - **@ExceptionHandler**:标记在方法上,用于捕获特定类型的异常并进行处理。 - **...
在Spring MVC中,我们可以使用JSR-303/JSR-349标准的Bean Validation框架进行JSON数据校验。首先,你需要在实体类中添加对应的校验注解,如`@NotNull`、`@Size`等。然后,在控制器的方法中,使用`@Valid`注解来激活...
Spring MVC支持JSR-303/JSR-349 Bean Validation进行数据校验,通过在字段上添加验证注解,如`@NotNull`, `@Size`等。 ### 6. 异常处理 - **@ExceptionHandler**:在Controller方法中处理特定的异常。 - **@...
`@Valid` 会触发Bean Validation,对传入的对象进行校验,如果校验失败,Spring会自动返回错误信息。 6. `ModelAndView` 和 `Model`: `ModelAndView` 类用于组合视图和模型数据,它在传统MVC模式中常见。而`Model...