最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)的日期

引入依賴(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)證字符串類(lèi)型字段不為空或不為 null。如果驗(yàn)證失敗,則使用 message 屬性中定義的錯(cuò)誤消息提示用戶(hù)輸入不能為空或 null 值。

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

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

controller添加注解

@Validated 是 Spring Framework 提供的一個(gè)注解,用于在控制器方法級(jí)別或類(lèi)級(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è)類(lèi)捕獲參數(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)文章

  • servlet上傳文件實(shí)現(xiàn)代碼詳解(四)

    servlet上傳文件實(shí)現(xiàn)代碼詳解(四)

    這篇文章主要為大家詳細(xì)介紹了servlet上傳文件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Spring MVC注解式開(kāi)發(fā)使用詳解

    Spring MVC注解式開(kāi)發(fā)使用詳解

    本篇文章主要介紹了Spring MVC注解式開(kāi)發(fā)使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Java中的ArrayList類(lèi)常用方法和遍歷

    Java中的ArrayList類(lèi)常用方法和遍歷

    這篇文章主要介紹了Java中的ArrayList類(lèi)常用方法和遍歷,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Properties操作如何保存到屬性文件

    Properties操作如何保存到屬性文件

    這篇文章主要介紹了Properties操作保存到屬性文件的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Java中Runnable和Thread的區(qū)別分析

    Java中Runnable和Thread的區(qū)別分析

    在java中可有兩種方式實(shí)現(xiàn)多線(xiàn)程,一種是繼承Thread類(lèi),一種是實(shí)現(xiàn)Runnable接口,下面就拉分別介紹一下這兩種方法的優(yōu)缺點(diǎn)
    2013-03-03
  • Java并發(fā)包之CopyOnWriteArrayList類(lèi)的深入講解

    Java并發(fā)包之CopyOnWriteArrayList類(lèi)的深入講解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)包之CopyOnWriteArrayList類(lèi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 關(guān)于Java8新特性O(shè)ptional類(lèi)的詳細(xì)解讀

    關(guān)于Java8新特性O(shè)ptional類(lèi)的詳細(xì)解讀

    Optional類(lèi)是一個(gè)容器類(lèi),它可以保存類(lèi)型T的值,代表這個(gè)值存在?;蛘邇H僅保存null,表示這個(gè)值不存在,原來(lái)用 null 表示一個(gè)值不存在,現(xiàn)在Optional 可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常,需要的朋友可以參考下
    2023-05-05
  • mybatis輸出SQL格式化方式

    mybatis輸出SQL格式化方式

    這篇文章主要介紹了mybatis輸出SQL格式化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 深度解析Java常量池中的Integer緩沖池和String常量池

    深度解析Java常量池中的Integer緩沖池和String常量池

    為了減少對(duì)象重復(fù)創(chuàng)建、提升運(yùn)行時(shí)效率,Java 內(nèi)部提供了兩種重要的優(yōu)化機(jī)制Integer 緩沖池(IntegerCache)和 String 常量池(String Pool),本文將深入剖析兩大常量池的底層實(shí)現(xiàn)、工作流程、適用范圍,并通過(guò)流程圖和代碼示例幫助你徹底掌握
    2026-05-05
  • 解決SpringBoot @value注解取不到值的問(wèn)題

    解決SpringBoot @value注解取不到值的問(wèn)題

    這篇文章主要介紹了解決SpringBoot @value注解取不到值的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

崇明县| 雅安市| 南华县| 饶河县| 凤庆县| 南靖县| 饶阳县| 章丘市| 都昌县| 双柏县| 金溪县| 达州市| 荣成市| 黄山市| 繁昌县| 永清县| 安仁县| 长海县| 诏安县| 沙雅县| 敖汉旗| 荆州市| 腾冲县| 林甸县| 商水县| 改则县| 出国| 西华县| 吉隆县| 那坡县| 德令哈市| 徐汇区| 罗田县| 九寨沟县| 永康市| 长顺县| 昌黎县| 云南省| 双牌县| 太白县| 来凤县|