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

SpringBoot Validation入?yún)⑿r?yàn)國(guó)際化的項(xiàng)目實(shí)踐

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

在 Spring Boot 中,可以使用 Validation 和國(guó)際化來(lái)實(shí)現(xiàn)對(duì)入?yún)⒌男r?yàn)。

常用的校驗(yàn) 

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

引入依賴

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

創(chuàng)建properties文件

安裝插件 

創(chuàng)建文件 

添加語(yǔ)言 

添加配置 

語(yǔ)言配置 

非空配置

長(zhǎng)度配置 

解決properties文件中文亂碼

mode添加注解

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

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

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

controller添加注解

@Validated 是 Spring Framework 提供的一個(gè)注解,用于在控制器方法級(jí)別或類級(jí)別上啟用方法參數(shù)驗(yàn)證,以對(duì)請(qǐng)求參數(shù)進(jìn)行驗(yàn)證。

@Valid 是 Java 標(biāo)準(zhǔn)庫(kù)中的一個(gè)注解,它與 Bean Validation 規(guī)范(JSR 380)一起使用,用于啟用對(duì)象級(jí)別驗(yàn)證。 

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

添加異常捕捉

這個(gè)類捕獲參數(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)出錯(cuò)";
    // get請(qǐng)求的對(duì)象參數(shù)校驗(yàn)異常
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({MissingServletRequestParameterException.class})
    public ResponseResult bindExceptionHandler(MissingServletRequestParameterException e) {
        String requestURI = httpServletRequest.getRequestURI();
        log.error("請(qǐng)求地址'{}',get方式請(qǐng)求參數(shù)'{}'必傳", requestURI,e.getParameterName());
        return ResponseResult.errorResult(HttpCodeEnum.SYSTEM_ERROR.getCode(), e.getMessage());
    }
    // post請(qǐng)求的對(duì)象參數(shù)校驗(yàn)異常
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({MethodArgumentNotValidException.class})
    public ResponseResult methodArgumentNotValidHandler(MethodArgumentNotValidException e) {
        String requestURI = httpServletRequest.getRequestURI();
        log.error("請(qǐng)求地址'{}',post方式請(qǐng)求參數(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;
    }
}

測(cè)試

name為空 

name長(zhǎng)度不符合 

切換為英文 

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

相關(guān)文章

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

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

    比如你本地修復(fù)的 bug,需要把增量文件發(fā)給客戶,很多場(chǎng)景下大家都需要手工整理修改的文件,并整理好目錄,這個(gè)很麻煩,那有沒有簡(jiǎn)單的技巧呢?本文主要介紹了IDEA生成patch和使用patch的方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-08-08
  • Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    這篇文章主要介紹了Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 關(guān)于HttpServletRequest獲取POST請(qǐng)求Body參數(shù)的3種方式

    關(guān)于HttpServletRequest獲取POST請(qǐng)求Body參數(shù)的3種方式

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

    Java反轉(zhuǎn)鏈表測(cè)試過(guò)程介紹

    這篇文章主要介紹了Java反轉(zhuǎn)鏈表測(cè)試過(guò)程,學(xué)習(xí)過(guò)數(shù)據(jù)結(jié)構(gòu)的小伙伴們,對(duì)鏈表想來(lái)是并不陌生。本篇文章將為大家介紹幾種在Java語(yǔ)言當(dāng)中,實(shí)現(xiàn)鏈表反轉(zhuǎn)的幾種方法,以下是具體內(nèi)容
    2023-04-04
  • JavaSwing基礎(chǔ)之Layout布局相關(guān)知識(shí)詳解

    JavaSwing基礎(chǔ)之Layout布局相關(guān)知識(shí)詳解

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

    Springboot web項(xiàng)目打包實(shí)現(xiàn)過(guò)程解析

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

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

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

    一文讀懂Java Iterator(迭代器)

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

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

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

    IDEA配置tomcat服務(wù)器全過(guò)程

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

最新評(píng)論