亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用@RequestBody配合@Valid校驗入?yún)?shù)

 更新時間:2022年03月15日 09:41:07   作者:擊水三千里  
這篇文章主要介紹了使用@RequestBody配合@Valid校驗入?yún)?shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@RequestBody配合@Valid校驗入?yún)?shù)

自定義一個Controller

import com.example.demo.pojo.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;?
import javax.validation.Valid;
/**
?* @Author: luoye
?* @Date: 2018-10-12
?*/
@RestController
public class ValiController {
? ? @PostMapping(value = "/",produces = "application/json;charset=UTF-8")
? ? public User vali(@RequestBody @Valid User user){
? ? ? ? return user;
? ? }
}

自定義實體類

import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
?
/**
?* @Author: luoye
?* @Date: 2018-10-12
?*/
public class User {
? ? @NotBlank(message = "這個姓名不能為空")
? ? private String name;
? ? @NotNull(message = "這個年齡不能為空")
? ? @Max(value = 105,message = "太大了")
? ? private Integer age;
?
? ? public String getName() {
? ? ? ? return name;
? ? }
?
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
?
? ? public Integer getAge() {
? ? ? ? return age;
? ? }
?
? ? public void setAge(Integer age) {
? ? ? ? this.age = age;
? ? }
}

自定義全局異常處理器

import com.example.demo.pojo.ErrorMsg;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;
?
import java.util.ArrayList;
import java.util.List;
?
/**
?* @Author luoye
?* @Date: 2018/10/12 16:50
?*/
@ControllerAdvice
public class ExceptionHandlerContrller {?
?
? ? @ExceptionHandler(MethodArgumentNotValidException.class)
? ? @ResponseBody
? ? public List<ErrorMsg> exception(MethodArgumentNotValidException e) {
? ? ? ? BindingResult bindingResult = e.getBindingResult();
? ? ? ? List<ObjectError> allErrors = bindingResult.getAllErrors();
? ? ? ? List<ErrorMsg> errorMsgs = new ArrayList<>();
?
? ? ? ? allErrors.forEach(objectError -> {
? ? ? ? ? ? ErrorMsg errorMsg = new ErrorMsg();
? ? ? ? ? ? FieldError fieldError = (FieldError)objectError;
? ? ? ? ? ? errorMsg.setField(fieldError.getField());
? ? ? ? ? ? errorMsg.setObjectName(fieldError.getObjectName());
? ? ? ? ? ? errorMsg.setMessage(fieldError.getDefaultMessage());
? ? ? ? ? ? errorMsgs.add(errorMsg);
? ? ? ? });
? ? ? ? return errorMsgs;
? ? }
}

PostMan測試下

[
? ? {
? ? ? ? "field": "name",
? ? ? ? "message": "這個姓名不能為空",
? ? ? ? "objectName": "user"
? ? },
? ? {
? ? ? ? "field": "age",
? ? ? ? "message": "這個年齡不能為空",
? ? ? ? "objectName": "user"
? ? }
]

附錄

@Valid 注解類型的使用:

  • @Null:限制只能為null
  • @NotNull:限制必須不為null
  • @AssertFalse:限制必須為false
  • @AssertTrue:限制必須為true
  • @DecimalMax(value):限制必須為一個不大于指定值的數(shù)字
  • @DecimalMin(value):限制必須為一個不小于指定值的數(shù)字
  • @Digits(integer,fraction):限制必須為一個小數(shù),且整數(shù)部分的位數(shù)不能超過integer,小數(shù)部分的位數(shù)不能超過fraction
  • @Future:限制必須是一個將來的日期
  • @Max(value):限制必須為一個不大于指定值的數(shù)字
  • @Min(value):限制必須為一個不小于指定值的數(shù)字
  • @Past:限制必須是一個過去的日期
  • @Pattern(value):限制必須符合指定的正則表達式
  • @Size(max,min):限制字符長度必須在min到max之間
  • @Past:驗證注解的元素值(日期類型)比當前時間早
  • @NotEmpty:驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0)
  • @NotBlank:驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應用于字符串且在比較時會去除字符串的空格
  • @Email:驗證注解的元素值是Email,也可以通過正則表達式和flag指定自定義的email格式

@Valid校驗@RequestBody的參數(shù)

希望通過注解校驗post請求的body

需要用到@Valid注解

public String getResponse(@RequestBody @Valid MyRequest request) throws Exception {
	xxx
}

在request實體類添加注解進行校驗

例如用@NotNull進行判空校驗

@Data
public class MyRequest {
    @NotNull(message = "id 不能為空")
    private Integer id;
    @NotNull(message = "name 不能為空")
    private String name;
}

結(jié)合統(tǒng)一異常處理,處理MethodArgumentNotValidException

可以返回注解配置的錯誤信息

@ControllerAdvice
@Slf4j
public class ExceptionResolver {
    @ExceptionHandler(value = {Exception.class})
    @ResponseBody
    public String handleOtherExceptions(final Exception ex) {
        if (ex instanceof MethodArgumentNotValidException) {
            // 入?yún)⑿r炲e誤
            StringBuilder msg = new StringBuilder();
            MethodArgumentNotValidException mex = (MethodArgumentNotValidException) ex;
            BindingResult bindingResult = mex.getBindingResult();
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            allErrors.forEach(objectError -> {
                FieldError fieldError = (FieldError) objectError;
                String oneMsg = fieldError.getDefaultMessage();
                msg.append(oneMsg);
                msg.append(";");
            });
            return msg.toString();
        } 
    }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Servlet之過濾器(Filter)

    詳解Servlet之過濾器(Filter)

    本篇文章主要介紹了Servlet——過濾器(Filter),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Spring Boot啟動過程(六)之內(nèi)嵌Tomcat中StandardHost、StandardContext和StandardWrapper的啟動教程詳解

    Spring Boot啟動過程(六)之內(nèi)嵌Tomcat中StandardHost、StandardContext和Sta

    這篇文章主要介紹了Spring Boot啟動過程(六)之內(nèi)嵌Tomcat中StandardHost、StandardContext和StandardWrapper的啟動教程詳解,需要的朋友可以參考下
    2017-04-04
  • MyBatisPlus超詳細分析條件查詢

    MyBatisPlus超詳細分析條件查詢

    這篇文章主要介紹了MyBatisPlus條件查詢的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Spring Boot 整合mybatis 與 swagger2

    Spring Boot 整合mybatis 與 swagger2

    之前使用springMVC+spring+mybatis,總是被一些繁瑣的xml配置,還經(jīng)常出錯,下面把以前的一些ssm項目改成了spring boot + mybatis,相對于來說優(yōu)點太明顯了,具體內(nèi)容詳情大家通過本文學習吧
    2017-08-08
  • Java數(shù)據(jù)庫連接_jdbc-odbc橋連接方式(詳解)

    Java數(shù)據(jù)庫連接_jdbc-odbc橋連接方式(詳解)

    下面小編就為大家?guī)硪黄狫ava數(shù)據(jù)庫連接_jdbc-odbc橋連接方式(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    今天小編就為大家分享一篇java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • java的JsonObject對象提取值方法

    java的JsonObject對象提取值方法

    下面小編就為大家分享一篇java的JsonObject對象提取值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • SpringBoot和VUE源碼直接整合打包成jar的踩坑記錄

    SpringBoot和VUE源碼直接整合打包成jar的踩坑記錄

    這篇文章主要介紹了SpringBoot和VUE源碼直接整合打包成jar的踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Springboot如何利用攔截器攔截請求信息收集到日志詳解

    Springboot如何利用攔截器攔截請求信息收集到日志詳解

    一些系統(tǒng)經(jīng)常需要關注用戶請求的具體信息,如用戶信息、請求參數(shù)、響應結(jié)果等等,在SpringBoot應用中可通過攔截器的方式統(tǒng)一處理,下面這篇文章主要給大家介紹了關于Springboot如何利用攔截器攔截請求信息收集到日志的相關資料,需要的朋友可以參考下
    2021-08-08
  • java網(wǎng)絡編程基礎知識介紹

    java網(wǎng)絡編程基礎知識介紹

    這篇文章主要介紹了java網(wǎng)絡編程基礎知識介紹,涉及OSI分層模型和TCP/IP分層模型的對應關系、IP地址、端口號、tcp、udp等相關內(nèi)容,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11

最新評論