JavaBean valication驗證實現方法示例
本文實例講述了JavaBean valication驗證實現方法。分享給大家供大家參考,具體如下:
在實際項目中,會遇到對JavaBean進行操作的時候,比如我們做個后臺管理,添加某個用戶信息,添加某個產品,需要對參數進行驗證,看是否符合需求,后端就可以使用valication去驗證參數,而不需要一個一個去在代碼中驗證,這樣顯得代碼非常的冗余。
校驗注解:
valication提供了很多的校驗注解,具體的參數可以去看源碼,主要是message參數,要是校驗不符合的時候,會返回這些自定義的不符合信息。
注解類型 | 屬性值類型 | 使用說明 |
@AssertFalse | Boolean、boolean | 被注解的屬性值是false。 |
@AssertTrue | Boolean、boolean | 被注解的屬性值是true。 |
@DecimalMax(value) | BigDecimal、BigInteger、String、byte、short、int、long及對應類型的封裝類 | 被注解的屬性值必須是數字,其值必須小于或等于指定的最大值。注:參數值必須是能正確轉化為BigDecimal的字符串,即,會使用new BigDecimal(String str)。 |
@DecimalMin(value) | BigDecimal、BigInteger、String、byte、short、int、long及對應類型的封裝類 | 被注解的屬性值必須是數字,其值必須大于或等于指定的最小值。注:參數值必須是能正確轉化為BigDecimal的字符串,即,會使用new BigDecimal(String str)。 |
@Max | BigDecimal、BigInteger、byte、short、int、long及對應類型的封裝類 | 被注解的屬性值必須小于或等于指定的最大值。 |
@Min | BigDecimal、BigInteger、byte、short、int、long及對應類型的封裝類 | 被注解的屬性值必須大于或等于指定的最小值。 |
@Digits(integer=,fraction=) | BigDecimal、BigInteger、String、byte、short、int、long及對應類型的封裝類 | 被注解的屬性值必須是數字,且整數位最多integer位,小數位最多fraction位。 |
String | 被注解的屬性值是Email地址 | |
@Negative | 被注解的屬性值必須為負數。 | |
@NegativeOrZero | 被注解的屬性值必須為負數或0。 | |
@Positive | 被注解的屬性值必須為正數。 | |
@PositiveOrZero | 被注解的屬性值必須為正數或0。 | |
@NotBlank | String | 被注解的屬性值是否為非null,并且去空格之后的length大于0。與@NotEmpty的區(qū)別在于,@NotBlank只能注解字符串,并且忽略結尾空格。 |
@NotEmpty | String、Collection、Map、arrays | 被注解的屬性值是否為非null或空集合。 |
@NotNull | 任意類型 | 被注解的屬性值是否為非null。 |
@Null | 任意類型 | 被注解的屬性值是否為null。 |
@Future | java.util.Date, java.util.Calendar; |
被注解的屬性值必須是將來的一個日期。 |
@FutureOrPresent | java.util.Date, java.util.Calendar; |
被注解的屬性值必須是當前或將來的一個日期。 |
@PastOrPresent | java.util.Date, java.util.Calendar; |
被注解的屬性值必須是現在或過去的一個日期。 |
@Past | java.util.Date, java.util.Calendar; |
被注解的屬性值必須是過去的一個日期。 |
@Size(min=, max=) | String、Collection、Map、arrays | 驗證注解的元素值的在min和max(包含)指定區(qū)間之內,如字符長度、集合大小 |
注:
1 @NotEmpty :不能為null,且Size>0
2 @NotNull:不能為null,但可以為empty,沒有Size的約束
3 @NotBlank:只用于String,不能為null且trim()之后size>0
接下來,我們就在postman中模擬,添加用戶的信息。
1.創(chuàng)建一個用戶Bean,并注解上相應的驗證。
public class UserBean { //不為空判斷 @NotEmpty(message = "用戶名不能為空") private String userName; //手機正則驗證 @NotEmpty (message = "電話號碼不能為空") @Pattern(regexp = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$",message = "電話號碼不正確") private String mobile; //數值限定大小 @NotNull(message = "年齡不能為空") @Min(message = "你未成年額!",value = 18) private Integer age; //默認匹配所有的正則,需要自己寫匹配規(guī)則,使用里面的regexp參數 @Email(message = "email格式不對") private String email; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
2.在controller層中對前端傳過來的數據與自己寫的驗證校驗是否正確,使用@Valid開啟對對象進行校驗。
@RestController public class ValidationController { @PostMapping("addUserMessage") public String addUserMessage(@Valid @RequestBody UserBean userBean,BindingResult bindingResult){ //如果表單驗證錯誤,獲取message中的信息并返回 if(bindingResult.hasErrors()){ return bindingResult.getFieldError().getDefaultMessage(); } //表單驗證成功之后,可以寫邏輯代碼或者寫入數據 return "操作成功"; } }
3.在postman中進行各種驗證,只有當所有的都校驗成功后,才會往下走。
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
- 如何動態(tài)修改JavaBean中注解的參數值
- Java cglib為實體類(javabean)動態(tài)添加屬性方式
- java通過cglib動態(tài)生成實體bean的操作
- java 動態(tài)生成bean的案例
- Java 如何從spring容器中獲取注入的bean對象
- JavaBean實體類處理外鍵過程解析
- 通過實例解析POJO和JavaBean的區(qū)別
- java Beanutils.copyProperties( )用法詳解
- AndroidStudio插件GsonFormat之Json快速轉換JavaBean教程
- java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
- Java 確保某個Bean類被最后執(zhí)行的幾種實現方式
相關文章
使用springboot整合mybatis-plus實現數據庫的增刪查改示例
這篇文章主要介紹了使用springboot整合mybatis-plus實現數據庫的增刪查改示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04SpringBoot日程管理Quartz與定時任務Task實現詳解
定時任務是企業(yè)級開發(fā)中必不可少的組成部分,諸如長周期業(yè)務數據的計算,例如年度報表,諸如系統(tǒng)臟數據的處理,再比如系統(tǒng)性能監(jiān)控報告,還有搶購類活動的商品上架,這些都離不開定時任務。本節(jié)將介紹兩種不同的定時任務技術2022-09-09