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

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

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

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

常用的校驗(yàn) 

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

引入依賴

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

創(chuàng)建properties文件

安裝插件 

創(chuàng)建文件 

添加語言 

添加配置 

語言配置 

非空配置

長度配置 

解決properties文件中文亂碼

mode添加注解

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

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

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

controller添加注解

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

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

@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ù)校驗(yàn)異常
    @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ù)校驗(yàn)異常
    @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長度不符合 

切換為英文 

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

相關(guān)文章

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

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

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

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

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

    Java中的ArrayList類常用方法和遍歷

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

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

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

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

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

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

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

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

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

    mybatis輸出SQL格式化方式

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

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

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

    解決SpringBoot @value注解取不到值的問題

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

最新評論

湟源县| 射洪县| 扬州市| 达日县| 肥西县| 和平区| 仲巴县| 盐亭县| 揭东县| 万载县| 休宁县| 黄大仙区| 辽阳市| 临沧市| 拜泉县| 兴业县| 乌兰察布市| 湘乡市| 渭源县| 六安市| 卫辉市| 新兴县| 泸定县| 高雄县| 林芝县| 治多县| 五指山市| 噶尔县| 甘德县| 陕西省| 马边| 隆德县| 青川县| 南安市| 仙游县| 东城区| 贵南县| 平顶山市| 赤壁市| 呼和浩特市| 兴文县|