zoukankan      html  css  js  c++  java
  • Spring-BeanValidation校验@RequestParam参数 (控制器单参数验证)

    概述

    我们知道,Spring BeanValidation可以用来校验我们客户的提交的参数对应的Bean对象。但是在很多情况,我们的参数只有一个简单字符串或者是数字型参数(采用@RequestParam注解),要想使用SpringValidation还需要把这简单的参数包装成对象,甚是麻烦。下面我们看下,怎么样才能使@RequestParam注解的参数也可以使用Spring Validatio呢。

    方案

      1.Spring容器注入MethodValidationPostProcessor对象 (spring-mvc.xml配置)

     <bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>

      注意:如果Sping配置文件和SpringMVC配置文件分别独立,需要把这个配置加到SpringMVC配置中

      2.使用@Validated注解

      在对应的Controller中加上@Validated注解,当然也可以加到独立的请求方法中

      3.使用校验注解

    @RestController
    @Validated
    public class TestController {
    
        @RequestMapping("/test")
        public String test(@NotBlank(message = "姓名不能为空") @RequestParam("name") String name) {
             // .....
             return ResponseVO.successWithNoData("ok");
         }
    }

      4.局校验异常捕捉

    @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 "请求参数不合法";
        }
    }

    转 : https://blog.csdn.net/onupway/article/details/78367629

  • 相关阅读:
    [Err] 1168
    SpringAOP的运用方式——注解方式和XML配置方式
    展开运算符的理解
    find indexof findindex includes 的区别
    关于MVC MVVM的理解
    sync修饰符
    vue导航守卫
    输入网址到页面显示 经历了什么(转载)
    vue中侦听器的使用
    函数声明的三种方式
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13789089.html
Copyright © 2011-2022 走看看