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

  • 相关阅读:
    eclipse经常卡死、反应慢、内存溢出的解决方案
    PAC4J 初探
    suse11离线安装nginx
    linux修改乱码的文件名
    CentOS修改服务器系统时间
    Unable to open nested entry '********.jar' 问题解决
    openssl req(生成证书请求和自建CA)
    CRT证书转JKS证书
    如何创建一个自签名的SSL证书(X509)
    Redis分布式锁的深度剖析
  • 原文地址:https://www.cnblogs.com/fps2tao/p/13789089.html
Copyright © 2011-2022 走看看