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

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

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

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

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

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

直接貼上代碼:

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

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

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

在這里插入圖片描述

@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){
  //判斷有沒有異常錯誤,如果有則返回默認消息
       if (result.hasErrors()){
            String defaultMessage = result.getFieldError().getDefaultMessage();
            return defaultMessage;
        }
        //打印一下數據結構
        System.out.println(userInfo); 
        //如果沒有錯誤,返回注冊成功
        return "注冊成功";
    }
  }

在這里插入圖片描述

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

在這里插入圖片描述

返回我們的設定

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

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

當然不,這時候就要用到全局異常類了

起一個類

@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 "注冊成功";
    }

這時候我們傳入參數

在這里插入圖片描述

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

附上 部分注解

  • @Null 限制只能為null
  • @NotNull 限制必須不為null
  • @AssertFalse 限制必須為false
  • @AssertTrue 限制必須為true
  • @DecimalMax(value) 限制必須為一個不大于指定值的數字
  • @DecimalMin(value) 限制必須為一個不小于指定值的數字
  • @Digits(integer,fraction) 限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction
  • @Future 限制必須是一個將來的日期
  • @Max(value) 限制必須為一個不大于指定值的數字
  • @Min(value) 限制必須為一個不小于指定值的數字
  • @Past 限制必須是一個過去的日期
  • @Pattern(value) 限制必須符合指定的正則表達式
  • @Size(max,min) 限制字符長度必須在min到max之間
  • @Past 驗證注解的元素值(日期類型)比當前時間早
  • @NotEmpty 驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0)
  • @NotBlank 驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應用于字符串且在比較時會去除字符串的空格
  • @Email 驗證注解的元素值是Email,也可以通過正則表達式和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

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

相關文章

  • java使用UDP實現(xiàn)點對點通信

    java使用UDP實現(xiàn)點對點通信

    這篇文章主要為大家詳細介紹了java使用UDP實現(xiàn)點對點通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 帶你了解Java數據結構和算法之高級排序

    帶你了解Java數據結構和算法之高級排序

    這篇文章主要為大家介紹了Java數據結構和算法之高級排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 關于Java中的mysql時區(qū)問題詳解

    關于Java中的mysql時區(qū)問題詳解

    這篇文章主要給大家介紹了關于Java中mysql時區(qū)問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • Spring Security實現(xiàn)基于角色的訪問控制框架

    Spring Security實現(xiàn)基于角色的訪問控制框架

    Spring Security是一個功能強大的安全框架,提供了基于角色的訪問控制、身份驗證、授權等安全功能,可輕松保護Web應用程序的安全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-04-04
  • 關于Idea中的.properties文件顯示問題

    關于Idea中的.properties文件顯示問題

    這篇文章主要介紹了關于Idea中的.properties文件顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java EE中的編碼問題及解決方案(總結)

    Java EE中的編碼問題及解決方案(總結)

    在JavaEE開發(fā)中,處理字符編碼問題是確保數據準確傳輸和顯示的關鍵,常見的編碼問題包括表單提交亂碼、JSP頁面編碼、請求參數編碼不一致等,本文給大家介紹Java EE中的編碼問題及解決方案,感興趣的朋友一起看看吧
    2024-10-10
  • Java中的System.arraycopy()淺復制方法詳解

    Java中的System.arraycopy()淺復制方法詳解

    這篇文章主要介紹了Java中的System.arraycopy()淺復制方法詳解,Java數組的復制操作可以分為深度復制和淺度復制,簡單來說深度復制,可以將對象的值和對象的內容復制;淺復制是指對對象引用的復制,需要的朋友可以參考下
    2023-11-11
  • 深入理解Java中Filter的作用種類及應用場景

    深入理解Java中Filter的作用種類及應用場景

    Filter(過濾器)是Java Web中的一種重要組件,可以對請求和響應進行攔截處理,對數據進行過濾和處理。Filter可以實現(xiàn)許多功能,如:鑒權、日志記錄、字符編碼轉換、數據壓縮、請求重定向等等
    2023-04-04
  • Java 在生活中的 10 大應用

    Java 在生活中的 10 大應用

    這篇文章主要給大家分享Java 在生活中的 10 大應用,桌面圖形用戶界面、移動應用、人工智能、網絡應用程序、大數據技術、游戲應用、商業(yè)應用、嵌入式系統(tǒng)、云應用、科學應用,下文來看具體應用介紹,需要的朋友可以參考一下
    2021-11-11
  • IDEA新建springboot項目時未生成pom.xml文件的解決操作

    IDEA新建springboot項目時未生成pom.xml文件的解決操作

    這篇文章主要給大家介紹了關于IDEA新建springboot項目時未生成pom.xml文件的解決操作方法,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02

最新評論