使用注解@Validated和BindingResult對入?yún)⑦M行非空校驗方式
注解@Validated和BindingResult對入?yún)⒎强招r?/h2>
在項目當中少不了入?yún)⑿r?,服?wù)器和瀏覽器互不信任,不能因為前端加入?yún)⑴袛嗔撕笈_就不處理了,這樣是不對的。
比如前臺傳過來一個對象作為入?yún)?shù),這個對象中有些屬性允許為空,有些屬性不允許為空。那么你還在使用if()else{}進行非空判斷嗎?不妨嘗試下使用注解,可以使用@Validated和BindingResult。
注意:BindingResult需要放到@Validated后面
示例代碼如下:普通屬性可以用@NotEmpty() 特殊的使用@NotNull() 比如:枚舉類型
實體類:什么不允許為空就加
@NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學(xué)校名不能為空")
注意:重要的事情叮囑兩遍。public interface SchoolGroup{} 別忘了加這個!public interface SchoolGroup{} 別忘了加這個!
public class SchoolDTO implements Serializable { private Long id; @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學(xué)校名不能為空") private String schoolName; @NotNull @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "學(xué)校負責(zé)人不能為空") private String schoolPrincipal; @NotNull @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "職務(wù)不能為空") private String principalPosition; @NotNull @NotEmpty(groups = {SchoolDTO.SchoolGroup.class},message = "聯(lián)系電話不能為空") private String schoolPhone; //getter setter tostring 省略 public interface SchoolGroup{} 別忘了加這個 }
控制層:在入?yún)ο笊霞覢Validated({SchoolDTO.SchoolGroup.class}), BindingResult bindingResult @Validated進行驗證,BindingResult可以獲取校驗錯誤信息
@PostMapping("/schools") @PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")") public Map<String,Object> createSchool(@RequestBody @Validated({SchoolDTO.SchoolGroup.class}) SchoolDTO schoolDTO,BindingResult bindingResult) throws Exception { //返回校驗錯誤信息 Map<String,Object>map=new HashMap<>(); if(bindingResult.hasErrors()){ map.put("success","false"); map.put("message",bindingResult.getAllErrors()); return map; } // .........業(yè)務(wù)省略 return map; } }
測試:入?yún)⒌臅r候我沒有傳principalPosition和schoolPhone
@Validated 和 BindingResult 使用遇到的坑
@Validated 與BindingResult 需要相鄰,否則 變量result 不能接受錯誤信息
控制臺輸出
Field error in object 'entity' on field '變量': rejected value [null]; codes [NotNull.entity.變量,NotNull.變量,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes
正確的內(nèi)容截圖
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決
這篇文章主要介紹了Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Java中documentHelper解析xml獲取想要的數(shù)據(jù)
本文主要介紹了Java中documentHelper解析xml獲取想要的數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02SSH框架網(wǎng)上商城項目第4戰(zhàn)之EasyUI菜單的實現(xiàn)
SSH框架網(wǎng)上商城項目第4戰(zhàn)之EasyUI菜單的實現(xiàn),本文主要使用EasyUI技術(shù)簡單實現(xiàn)后臺菜單,感興趣的小伙伴們可以參考一下2016-05-05springboot整合nacos,如何讀取nacos配置文件
這篇文章主要介紹了springboot整合nacos,如何讀取nacos配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡單示例
這篇文章主要介紹了Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡單示例的相關(guān)資料,這里對byte[]類型對long,int,double,float,short,cahr,object,string類型相互轉(zhuǎn)換的實例,需要的朋友可以參考下2017-01-01SpringCloud學(xué)習(xí)筆記之OpenFeign進行服務(wù)調(diào)用
OpenFeign對feign進行進一步的封裝,添加了springmvc的一些功能,更加強大,下面這篇文章主要給大家介紹了關(guān)于SpringCloud學(xué)習(xí)筆記之OpenFeign進行服務(wù)調(diào)用的相關(guān)資料,需要的朋友可以參考下2022-01-01