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

校驗非空的注解@NotNull如何取得自定義的message

 更新時間:2021年09月28日 17:06:54   作者:紳士jiejie  
這篇文章主要介紹了校驗非空的注解@NotNull如何取得自定義的message,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

校驗非空的注解@NotNull如何取得自定義的message

由于項目表單需要校驗字段過多,一個一個去判空太麻煩,所以用了@NotNull注解,字段為空會拋出MethodArgumentNotValidException異常。

接下來要取得@NotNull(message=“自定義異常”)里的message內(nèi)容給前端顯示

直接貼上代碼:

public String  getMessage(MethodArgumentNotValidException exception){
String message =  exception.getBindingResult().getFieldError().getDefaultMessage();
return message;
}

用法:定義一個全局異常處理

一旦發(fā)生該類異常,就會捕捉處理,返回給前端信息,返回類Result要根據(jù)自己項目業(yè)務(wù)需要來定義

在這里插入圖片描述

@NotNull 等注解的簡單使用

springboot 2.3.0 以后不會自動引入jar包,所以要添加以下maven

2.3以前則不需要引入maven包

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

注冊一個賬號, 有賬號+密碼

前端會做一個判空,但是后端同時也要做一個判空,防止url直接訪問

這時后端的代碼通常是

if(name!=null){
 return "賬號不能為空,請重新輸入";
}
else if(password!=null){
 return "密碼不能為空,請重新輸入";
}

這樣就會顯得特別low,而且極不美觀

這時候就要用到一個注解@NotNull

簡單舉例說明:

@Data
public class UserInfo {
    @NotNull(message = "姓名不能為null")
    private String name;
    @Max(value = 30,message = "年齡不能超過30")
    private Integer age;    
    private Integer password;
    private String sex;
}

Controller層

簡單舉例說明

@RestController
public class TestController {
    @RequestMapping("test1")
    public Object test1(@Valid @RequestBody UserInfo userInfo,BindingResult result){
  //判斷有沒有異常錯誤,如果有則返回默認(rèn)消息
       if (result.hasErrors()){
            String defaultMessage = result.getFieldError().getDefaultMessage();
            return defaultMessage;
        }
        //打印一下數(shù)據(jù)結(jié)構(gòu)
        System.out.println(userInfo); 
        //如果沒有錯誤,返回注冊成功
        return "注冊成功";
    }
  }

在這里插入圖片描述

用postMan 傳入json 參數(shù),name有值,年齡超過30歲

在這里插入圖片描述

返回我們的設(shè)定

name 為null 同理,會按順序判斷!

但是問題又來了,難道我們每個Controller層的方法里面都要寫一個判斷方法?

當(dāng)然不,這時候就要用到全局異常類了

起一個類

@ControllerAdvice
public class ControllerException {
    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Object handleValidException(MethodArgumentNotValidException e) {
    
        //將錯誤信息返回給前臺
        return e.getBindingResult().getFieldError().getDefaultMessage();
    }
}

為了有所區(qū)分,寫下另一個訪問方法

 @RequestMapping("test2")
    public Object test1(@Valid @RequestBody UserInfo userInfo){
        
        System.out.println(userInfo);
        return "注冊成功";
    }

這時候我們傳入?yún)?shù)

在這里插入圖片描述

到此結(jié)束,再也不用寫一堆各種判空了

附上 部分注解

  • @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) 限制必須符合指定的正則表達(dá)式
  • @Size(max,min) 限制字符長度必須在min到max之間
  • @Past 驗證注解的元素值(日期類型)比當(dāng)前時間早
  • @NotEmpty 驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0)
  • @NotBlank 驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應(yīng)用于字符串且在比較時會去除字符串的空格
  • @Email 驗證注解的元素值是Email,也可以通過正則表達(dá)式和flag指定自定義的email格式

二次更新:所有的Controller 都寫這樣的代碼就要封裝成異常類

import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * @author :lsy
 * @date :Created in 2020/7/23 10:13
 * @modified By:
 */
@ControllerAdvice
public class ControllerException {
    private final static String EXCEPTION_MSG_KEY = "Exception message : ";
    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Object handleValidException(MethodArgumentNotValidException e) {
        //日志記錄錯誤信息
       // log.error(Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
        //將錯誤信息返回給前臺
       // return BaseResult.fail(500, Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
        return e.getBindingResult().getFieldError().getDefaultMessage();
    }
}

不需要寫B(tài)indingResult 也可以返回message

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

相關(guān)文章

  • Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)

    Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)

    這篇文章主要介紹了Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析,結(jié)合實例形式較為詳細(xì)的分析說明了jdk1.4,jdk1.5和jdk1.6版本的使用區(qū)別,需要的朋友可以參考下
    2015-12-12
  • arthas排查jvm中CPU占用過高問題解決

    arthas排查jvm中CPU占用過高問題解決

    這篇文章主要介紹了arthas排查jvm中CPU占用過高問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • @JsonFormat?和?@DateTimeFormat?時間格式化注解(場景示例代碼)

    @JsonFormat?和?@DateTimeFormat?時間格式化注解(場景示例代碼)

    這篇文章主要介紹了@JsonFormat和@DateTimeFormat時間格式化注解,本文通過場景示例代碼詳解給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案

    gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案

    這篇文章主要介紹了gateway網(wǎng)關(guān)與前端請求跨域問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring boot將配置屬性注入到bean類中

    Spring boot將配置屬性注入到bean類中

    本篇文章主要介紹了Spring boot將配置屬性注入到bean類中,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • java日期處理工具類

    java日期處理工具類

    這篇文章主要為大家詳細(xì)介紹了java日期處理工具類,其次還介紹了日期處理的基礎(chǔ)知識,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • java調(diào)用Oracle存儲過程的方法實例

    java調(diào)用Oracle存儲過程的方法實例

    這篇文章介紹了java調(diào)用Oracle存儲過程的方法實例,有需要的朋友可以參考一下
    2013-09-09
  • Java鎖機(jī)制Lock用法示例

    Java鎖機(jī)制Lock用法示例

    這篇文章主要介紹了Java鎖機(jī)制Lock用法,結(jié)合具體實例形式分析了Java鎖機(jī)制的相關(guān)上鎖、釋放鎖、隱式鎖、顯式鎖等概念與使用技巧,需要的朋友可以參考下
    2018-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點點(7)

    Java日常練習(xí)題,每天進(jìn)步一點點(7)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • 深入理解Spring中的Lookup(方法注入)

    深入理解Spring中的Lookup(方法注入)

    “Lookup方法”可以使Spring替換一個bean原有的,獲取其它對象具體的方法,并自動返回在容器中的查找結(jié)果。下面這篇文章主要給大家介紹了關(guān)于Spring中Lookup(方法注入)的相關(guān)資料,需要的朋友可以參考下
    2018-05-05

最新評論

宁津县| 铁力市| 施甸县| 阿城市| 定安县| 孝昌县| 海晏县| 印江| 外汇| 宿松县| 泗阳县| 木里| 日喀则市| 台南市| 澳门| 邓州市| 丹江口市| 乌兰浩特市| 贵南县| 青岛市| 吴江市| 仙桃市| 台北市| 诸城市| 同心县| 宁海县| 长顺县| 唐海县| 赣榆县| 嘉禾县| 青神县| 贞丰县| 逊克县| 南乐县| 北碚区| 新竹县| 东光县| 临海市| 台前县| 滕州市| 枞阳县|