如何使用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
- mongoose使用validate驗證, 獲取自定義驗證資訊Go
- 自定義Spring Security的身份驗證失敗處理Spring
- SpringBoot系列——自定義統一異常處理Spring Boot
- SpringCloud微服務實戰——搭建企業級開發框架(七):自定義通用響應訊息及統一異常處理SpringGCCloud微服務框架
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- restframework 異常處理及自定義異常RESTFramework
- C#自定義異常 統一異常處理C#
- JSR303自定義校驗註解,自定義註解校驗字串是否是JSON字串,可擴充套件字串JSON套件
- HTML5 setCustomValidity()自定義驗證資訊HTML
- HTML5 setCustomValidity() 自定義驗證資訊HTML
- jQuery Validate自定義驗證錯誤資訊jQuery
- 如何處理錯誤訊息PleaseinstalltheLinuxkernelheaderfilesLinuxHeader
- Spring Boot 使用 JSR303 實現引數驗證Spring BootJS
- [Laravel 8 使用者認證] Jetstream 之 如何自定義登入驗證Laravel
- ros|自定義訊息型別ROS型別
- Laravel 使用 Easywechat 書寫自定義模板訊息丶廣播訊息頻道Laravel
- HTML5 自定義驗證資訊顯示方式HTML
- Layui 自定義表單驗證UI
- Mac使用技巧_蘋果鎖屏介面如何自定義鎖屏訊息?Mac蘋果
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 如何在Mac上設定自定義鎖屏訊息?Mac
- Siri自定義Intent以及處理Intent
- 自定義事件相容處理物件事件物件
- nodejs開發微信公眾號中控服務(處理訊息、獲取token及jssdk簽名、自定義選單)NodeJS
- 自定義react資料驗證元件React元件
- Android自定義View---驗證碼AndroidView
- thinkphp驗證器獲取$data資料,自定義驗證,多條件唯一性驗證unique驗證PHP
- WIN32傳送自定義訊息Win32
- 【Django】DRF自定義異常處理Django
- MPLS RSVP訊息處理——VecloudCloud
- Kafka叢集訊息積壓問題及處理策略Kafka
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- PbootCMS如何取消後臺、留言、自定義表單驗證碼boot
- 使用訊息中介軟體時,如何保證訊息僅僅被消費一次?
- .net 透過特性及繼承IValidatableObject完成自定義表單驗證繼承Object
- gRPC(七)進階:自定義身份驗證RPC
- gin自定義驗證器&轉化中文