欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot Validation入?yún)⑿r瀲H化的項目實踐

 更新時間:2023年10月03日 11:46:32   作者:無語堵上西樓  
在Spring Boot中,可以使用Validation和國際化來實現(xiàn)對入?yún)⒌男r?本文就來介紹一下SpringBoot Validation入?yún)⑿r瀲H化,具有一定的參考價值,感興趣的可以了解一下

在 Spring Boot 中,可以使用 Validation 和國際化來實現(xiàn)對入?yún)⒌男r灐?/p>

常用的校驗 

@NotNull驗證字段值不能為 null
@NotEmpty驗證字段值不能為 null 或空字符串
@NotBlank驗證字符串字段值不能為空、null,并且必須至少包含一個非空白字符
@Size驗證字符串、集合或數(shù)組的大小是否在指定范圍內
@Min驗證數(shù)值字段值必須大于等于指定的最小值
@Max驗證數(shù)值字段值必須小于等于指定的最大值
@Email驗證字段值必須是有效的電子郵件地址格式
@Pattern驗證字段值必須匹配指定的正則表達式模式
@Past驗證日期字段值必須是過去的日期
@Future驗證日期字段值必須是將來的日期

引入依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

創(chuàng)建properties文件

安裝插件 

創(chuàng)建文件 

添加語言 

添加配置 

語言配置 

非空配置

長度配置 

解決properties文件中文亂碼

mode添加注解

@NotBlank 注解用于驗證字符串類型字段不為空或不為 null。如果驗證失敗,則使用 message 屬性中定義的錯誤消息提示用戶輸入不能為空或 null 值。

@Length 注解用于驗證字符串類型字段的長度是否符合指定的范圍。如果驗證失敗,就會使用 message 屬性中定義的錯誤消息提示用戶輸入的長度非法。

    /**
     * 學生姓名
     */
    @NotBlank(message = "{name.notBlank}")
    @Length(min = 2,max = 19,message="{name.length}")
    private String name;

controller添加注解

@Validated 是 Spring Framework 提供的一個注解,用于在控制器方法級別或類級別上啟用方法參數(shù)驗證,以對請求參數(shù)進行驗證。

@Valid 是 Java 標準庫中的一個注解,它與 Bean Validation 規(guī)范(JSR 380)一起使用,用于啟用對象級別驗證。 

@RestController
@RequestMapping("/test")
@Validated
public class TestController {
    @PostMapping("/user")
    public ResponseResult<String> user(@Valid @RequestBody Student student) {
        return new ResponseResult<>("userToken");
    }
}

添加異常捕捉

這個類捕獲參數(shù)異常 

import com.example.demo.util.HttpCodeEnum;
import com.example.demo.util.ResponseResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    @Autowired
    private HttpServletRequest httpServletRequest;
    private final String sysError="系統(tǒng)出錯";
    // get請求的對象參數(shù)校驗異常
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({MissingServletRequestParameterException.class})
    public ResponseResult bindExceptionHandler(MissingServletRequestParameterException e) {
        String requestURI = httpServletRequest.getRequestURI();
        log.error("請求地址'{}',get方式請求參數(shù)'{}'必傳", requestURI,e.getParameterName());
        return ResponseResult.errorResult(HttpCodeEnum.SYSTEM_ERROR.getCode(), e.getMessage());
    }
    // post請求的對象參數(shù)校驗異常
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({MethodArgumentNotValidException.class})
    public ResponseResult methodArgumentNotValidHandler(MethodArgumentNotValidException e) {
        String requestURI = httpServletRequest.getRequestURI();
        log.error("請求地址'{}',post方式請求參數(shù)異常'{}'", requestURI, e.getMessage());
        List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
        return ResponseResult.errorResult(HttpCodeEnum.SYSTEM_ERROR.getCode(), getValidExceptionMsg(allErrors));
    }
    private String getValidExceptionMsg(List<ObjectError> errors) {
        if(!CollectionUtils.isEmpty(errors)){
            StringBuilder sb = new StringBuilder();
            errors.forEach(error -> {
                if (error instanceof FieldError) {
                    sb.append(((FieldError)error).getField()).append(":");
                }
                sb.append(error.getDefaultMessage()).append(";");
            });
            String msg = sb.toString();
            msg = msg.substring(0, msg.length() -1);
            return msg;
        }
        return null;
    }
}

測試

name為空 

name長度不符合 

切換為英文 

到此這篇關于SpringBoot Validation入?yún)⑿r瀲H化的文章就介紹到這了,更多相關SpringBoot Validation入?yún)⑿r瀲H化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • IDEA生成patch和使用patch的方法實現(xiàn)

    IDEA生成patch和使用patch的方法實現(xiàn)

    比如你本地修復的 bug,需要把增量文件發(fā)給客戶,很多場景下大家都需要手工整理修改的文件,并整理好目錄,這個很麻煩,那有沒有簡單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實現(xiàn),感興趣的可以了解一下
    2023-08-08
  • Java面向對象編程(封裝/繼承/多態(tài))實例解析

    Java面向對象編程(封裝/繼承/多態(tài))實例解析

    這篇文章主要介紹了Java面向對象編程(封裝/繼承/多態(tài))實例解析的相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • 關于HttpServletRequest獲取POST請求Body參數(shù)的3種方式

    關于HttpServletRequest獲取POST請求Body參數(shù)的3種方式

    這篇文章主要介紹了關于HttpServletRequest獲取POST請求Body參數(shù)的3種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java反轉鏈表測試過程介紹

    Java反轉鏈表測試過程介紹

    這篇文章主要介紹了Java反轉鏈表測試過程,學習過數(shù)據(jù)結構的小伙伴們,對鏈表想來是并不陌生。本篇文章將為大家介紹幾種在Java語言當中,實現(xiàn)鏈表反轉的幾種方法,以下是具體內容
    2023-04-04
  • JavaSwing基礎之Layout布局相關知識詳解

    JavaSwing基礎之Layout布局相關知識詳解

    上次我們說到View的Mearsure流程,今天接著說說layout. 關于layout,很多朋友知道它是負責布局的,那么具體是怎么布局的?viewGroup和view的layout方法又有什么不同?一起來看看吧,需要的朋友可以參考下
    2021-05-05
  • Springboot web項目打包實現(xiàn)過程解析

    Springboot web項目打包實現(xiàn)過程解析

    這篇文章主要介紹了Springboot web項目打包實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 使用Spring實現(xiàn)@Value注入靜態(tài)字段

    使用Spring實現(xiàn)@Value注入靜態(tài)字段

    這篇文章主要介紹了使用Spring實現(xiàn)@Value注入靜態(tài)字段方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 一文讀懂Java Iterator(迭代器)

    一文讀懂Java Iterator(迭代器)

    這篇文章主要介紹了Java Iterator(迭代器)的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Java讀寫文件創(chuàng)建文件夾多種方法示例詳解

    Java讀寫文件創(chuàng)建文件夾多種方法示例詳解

    這篇文章主要介紹了Java讀寫文件創(chuàng)建文件夾等多種操作的方法,大家參考使用吧
    2013-11-11
  • IDEA配置tomcat服務器全過程

    IDEA配置tomcat服務器全過程

    這篇文章主要介紹了IDEA配置tomcat服務器全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論