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

  • 相关阅读:
    命令执行顺序控制与管道
    js获取返回首页
    手机站点击商务通无轨迹解决方法
    js文字向上滚动代码
    文字隐藏多余的文字
    QQ弹窗代码
    百度推送代码
    js手机站跳转
    js 判断时间,满足执行框架
    js切换换class
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13789089.html
Copyright © 2011-2022 走看看