@NotEmpty和@NotBlank和@NotNull小結
@NotEmpty和@NotBlank和@NotNull小結
相同點
@NotEmpty、@NotBlank和、@NotNull都來自於包org.hibernate.validator.constraints.*下的
不同點
@NotNull:不能為null,但可以為empty,用在基本型別上
@NotEmpty:不能為null,而且長度必須大於0,用在集合類上面
@NotBlank:只能作用在String上,不能為null,而且呼叫trim()後,長度必須大於0
如果在使用註解 @Validator的時候,出現如下錯誤: javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer 就是型別和註解不匹配導致的
自定義異常處理器,捕獲錯誤異常
當驗證不通過時會拋異常出來,在全域性異常中定義異常處理器。捕獲異常資訊(因為驗證不通過的項可能是多個所以統一捕獲處理),並拋給前端
@ControllerAdvice
public class AlarmExceptionHandler {
private Logger logger = LoggerFactory.getLogger(AlarmExceptionHandler.class);
@ResponseBody
@ExceptionHandler
public JsonResult processException(Exception ex){
logger.error(ex.getMessage(), ex);
JsonResult jsonResult;
if (ex instanceof ApiException) {
ApiException error = ((ApiException) ex);
jsonResult = JsonResult.buildFailResult(error.getStatus(), error.getMessage(), null);
} else if (ex instanceof MethodArgumentNotValidException){
jsonResult = JsonResult.buildFailResult(ApiError.PARAMS_ERROR.value(), ((MethodArgumentNotValidException) ex).getBindingResult().getFieldError().getDefaultMessage(), null);
} else {
jsonResult = JsonResult.of(ApiError.SERVER_ERROR);
}
return jsonResult;
}
}
如上,MethodArgumentNotValidException 為異常型別
其他部分標籤含義小結
限制 | 說明 |
---|---|
@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,也可以通過正規表示式和flag指定自定義的email格式 |
示例:
@Pattern(regexp="1+$",message="{account.username.space}")
@Size(min=3,max=20,message="{account.username.size}")
a-zA-Z0-9 ↩︎
相關文章
- 安卓中的@Nullable和NonNull(NotNull) 等 註釋安卓Null
- Mongoose和Redis小結GoRedis
- Seata之小結和測試
- JS/TS 的 import 和 export 用法小結JSImportExport
- 工作小結和聊天系統設計
- Python之時間和日期使用小結Python
- shell指令碼基本概念和命令小結指令碼
- 文件知識庫的演進和小結
- java web中jsp和action之間通訊小結JavaWebJS
- 微信小程式和App結合的切入點在哪?微信小程式APP
- PHP 的異常處理之try和catch用法小結PHP
- Apr.7.2024小結——彙編中jmp和call的用法
- iOS13 適配和Xcode11.0踩坑小結iOSXCode
- ios和android內嵌h5頁面聯調小結iOSAndroidH5
- Python學習小結—使用者輸入和While迴圈PythonWhile
- 經驗總結--我的小程式開發和進化之路
- 小程式的一些總結:畫canvas和內嵌webviewCanvasWebView
- 專案完成小結:使用DjangoStarter v3和Taro開發的微信小程式Django微信小程式
- 硬連結和軟連結
- 擴充和縮小LV
- 大端序和小端序
- 讀《我和Labview》5條件結構和順序結構View
- 工作心得和總結
- html和css總結HTMLCSS
- BFS和Dijkstra結合
- [填坑手冊]小程式目錄結構和元件化使用心得元件化
- Linux軟連結和硬連結Linux
- linux硬連結和軟連結Linux
- 小程式音訊和視訊音訊
- 大端和小端的問題
- proxysql安裝和使用小記SQL
- js 利用||和&&賦值小技巧JS賦值
- Debug和幾個小例項
- Docker配置容器位置和小技巧Docker
- Dockerfile小記之ARG和ENVDocker
- require 和 include 區別小記UI
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- ReferenceField、EmbeddedDocumentField和LazyReferenceField的使用和總結對比