@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
- 《指標和引用小結》指標
- oracle spfile和pfile小結Oracle
- ActionContext和ServletActionContext小結ContextServlet
- 函式fgets和fputs、fread和fwrite、fscanf和fprintf用法小結函式
- mysql relay log和binlog 小結MySql
- git merge 和 git rebase 小結Git
- SVN和Git程式碼管理小結Git
- 【原創】oracle spfile和pfile小結Oracle
- JS/TS 的 import 和 export 用法小結JSImportExport
- 工作小結和聊天系統設計
- where和having的區別小結
- 11g_NotNull_Columns_with_Default_ValuesNull
- Python之時間和日期使用小結Python
- 文件知識庫的演進和小結
- Oracle中sys和system的區別小結Oracle
- 小議lob欄位結構和儲存
- shell指令碼基本概念和命令小結指令碼
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 結構體定義 typedef struct 用法詳解和用法小結結構體Struct
- 微信小程式和App結合的切入點在哪?微信小程式APP
- mybatis和springmvc整合遇到的問題小結MyBatisSpringMVC
- CSS 寫作建議和效能優化小結CSS優化
- HBase 在淘寶的應用和優化小結優化
- 自動化平臺的嘗試和小結
- session定義使用和丟失問題小結Session
- 移動 Web 開發問題和優化小結Web優化
- 多執行緒和多程式的區別(小結)執行緒
- 結構體定義:struct與typedef struct 用法詳解和用法小結結構體Struct
- PHP 的異常處理之try和catch用法小結PHP
- java web中jsp和action之間通訊小結JavaWebJS
- 《Android和PHP開發最佳實踐》一3.7 小結AndroidPHP
- php中$_REQUEST、$_POST、$_GET的區別和聯絡小結PHP
- 大坑和小鏟子
- 專案完成小結:使用DjangoStarter v3和Taro開發的微信小程式Django微信小程式
- ORA-600(kgscLogOff-notempty)錯誤Go
- 遭遇ORA-600 [kgscLogOff-notempty] bugGo