如何使用JSR303驗證及自定義訊息統一處理
1.引入pom
<!--validation驗證-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.需要驗證的實體型別加對應的註解(以非空判斷為例)
@NotBlank(message = "單位名稱不能為空")
private String orgName;
3.Controller對應方法裡新增@Validated
public CommonResult createArmyOrg(@Validated @RequestBody ArmyOrg createArmyOrg) {
return armyOrgService.createArmyOrg(createArmyOrg);
}
4.驗證結果,顯示比較亂
5.新增統一異常返回類ApiError
/**
* @author zhangjianshan on 2020-10-23
*/
@Data
public class ApiError {
private Integer status = 400;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime timestamp;
private String message;
private ApiError() {
timestamp = LocalDateTime.now();
}
public static ApiError error(String message) {
ApiError apiError = new ApiError();
apiError.setMessage(message);
return apiError;
}
public static ApiError error(Integer status, String message) {
ApiError apiError = new ApiError();
apiError.setStatus(status);
apiError.setMessage(message);
return apiError;
}
}
6.新增全域性異常處理ExceptionHandle
/**
* @author zhangjianshan on 2020-12-08
*/
@RestControllerAdvice
public class ExceptionHandle {
/**
* Validated
*
* @param e
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ApiError> exceptionHandler(MethodArgumentNotValidException e) {
return buildResponseEntity(ApiError.error(e.getBindingResult().getFieldError().getDefaultMessage()));
}
/**
* 重複
*
* @param e
* @return
*/
@ExceptionHandler(RepetitionException.class)
public ResponseEntity<ApiError> repetitionException(RepetitionException e) {
return buildResponseEntity(ApiError.error(e.getMessage()));
}
/**
* 統一返回
*/
private ResponseEntity<ApiError> buildResponseEntity(ApiError apiError) {
return new ResponseEntity<>(apiError, HttpStatus.valueOf(apiError.getStatus()));
}
}
7.再次驗證結果
相關文章
- SpringBoot-表單驗證-統一異常處理-自定義驗證資訊源Spring Boot
- Storm保證訊息處理ORM
- 自定義Spring Security的身份驗證失敗處理Spring
- 自定義訊息獲取訊息(轉)
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- SpringCloud微服務實戰——搭建企業級開發框架(七):自定義通用響應訊息及統一異常處理SpringGCCloud微服務框架
- 自定義訊息和對訊息的理解
- 自定義NSNotification訊息中心
- Storm基礎(四)保證訊息處理ORM
- 自定義Toast及視窗透明處理AST
- mongoose使用validate驗證, 獲取自定義驗證資訊Go
- VC增加自定義訊息 (轉)
- ros|自定義訊息型別ROS型別
- SpringBoot系列——自定義統一異常處理Spring Boot
- C#自定義異常 統一異常處理C#
- [Laravel 8 使用者認證] Jetstream 之 如何自定義登入驗證Laravel
- restframework 異常處理及自定義異常RESTFramework
- Mac使用技巧_蘋果鎖屏介面如何自定義鎖屏訊息?Mac蘋果
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 靈活定義和處理SOAP頭訊息 (轉)
- 如何在Mac上設定自定義鎖屏訊息?Mac
- 如何給FineReport設定自定義訊息提醒工具
- JSR303自定義校驗註解,自定義註解校驗字串是否是JSON字串,可擴充套件字串JSON套件
- Laravel 使用 Easywechat 書寫自定義模板訊息丶廣播訊息頻道Laravel
- IOS 訊息推送處理iOS
- 使用 Java API 處理 WebSphere MQ 大訊息JavaAPIWebMQ
- WCF分散式安全開發實踐(12):訊息安全模式之自定義X509證書驗證分散式模式
- Layui 自定義表單驗證UI
- VC自定義訊息postmessage用法(訊息響應函式)函式
- MVC驗證02-自定義驗證規則、郵件驗證MVC
- 對 echo 框架進行統一的自定義錯誤處理框架
- MVC驗證07-自定義Model級別驗證MVC
- 如何處理錯誤訊息PleaseinstalltheLinuxkernelheaderfilesLinuxHeader
- struts 如何能夠報處理正常的訊息
- 微信開發中的訊息驗證與訊息回覆
- WIN32傳送自定義訊息Win32
- Jquery實現自定義訊息彈窗jQuery
- 使用訊息中介軟體時,如何保證訊息僅僅被消費一次?