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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM