NotBlank @有効@使用@Validated、など、あなた自身の百度、紙はキャプチャと検証パッケージから復帰障害情報を焦点を当てて
参考:
https://mp.weixin.qq.com/s/EaZxYKyC4L_EofWdtyBCpw
https://www.jianshu.com/p/bcc5a3c86480
検証は例外メッセージをキャプチャするために失敗しました
@ControllerAdvice パブリッククラスWebExceptionHandler { //ダウン続けコードを見る前に、エンティティスローされた例外を要求した後、認証@Validパス検証の失敗を使用して要求処理をゲット @ExceptionHandler(BindException.class)を @ResponseBody 公共ResponseVO BindExceptionHandler(EはBindExceptionを){ 文字列メッセージ= e.getBindingResult()getAllErrors()ストリーム()地図(DefaultMessageSourceResolvable :: getDefaultMessage).collect(Collectors.joining(...)); 新しい新しいResponseVO(メッセージ)を返す; } //パラメータフォーマット処理要求障害後スローされた例外がエラー@RequestParam javax.validation.ConstraintViolationExceptionで検証 @ExceptionHandler(ConstraintViolationException.class) @ResponseBody 公共ResponseVO ConstraintViolationExceptionHandler(ConstraintViolationException E){
。。文字列メッセージ= e.getConstraintViolations()ストリーム()マップ(ConstraintViolation ::のgetMessage).collect(Collectors.joining())。 新しいResponseVO(メッセージ)を返します。 } //处理请求参数格式错误@RequestBody上検証失败后抛出的异常是MethodArgumentNotValidException异常。 @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody 公共ResponseVO MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException電子){ 文字列メッセージ= e.getBindingResult()。getAllErrors( ).stream()マップ(DefaultMessageSourceResolvable :: getDefaultMessage).collect(Collectors.joining(。))。 新しいResponseVO(メッセージ)を返します。 } }
例として与えられたリクエストパラメータは、その後、むしろよりはBindException ConstraintViolationExceptionとMethodArgumentNotValidExceptionを投げます
@RestController @RequestMapping( "試験") パブリッククラスTestController { ( "払い戻し")を@GetMapping 公衆ResponseVO払い戻し(@Valid RefundRequest要求)例外を{スロー 新しい新しいResponseVOを(返す); } } @Data パブリッククラスRefundRequest実装シリアライズ{ @NotBlank (メッセージ=「注文番号を空にすることはできません」) プライベート文字列注文ID、 @Min(値= 0、メッセージ=「消費量の量は負にすることはできませんです」) プライベートINT orderAmt; }
あなたは、複数の検証はリクエストパラメータを失敗した場合は、ヒット最初のチェックが例外をスロー失敗し、次のように、次のチェック異常なパラメータ、設定はありません
@Configuration パブリッククラスのWebConfig { @Bean 公共バリバリ(){ ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configureは() //フェイルファーストはない、コンテキストの検証の失敗が発生した場合、直ちに終了を確認手段その後の検証。 (真の).failFast .buildValidatorFactory(); 戻りvalidatorFactory.getValidator(); } @Bean 公共MethodValidationPostProcessor methodValidationPostProcessor(){ MethodValidationPostProcessor methodValidationPostProcessor新しい新しいMethodValidationPostProcessor =(); methodValidationPostProcessor.setValidator(バリ())。 methodValidationPostProcessorを返します。 } }
NotBlank @有効@使用@Validated、など、あなた自身の百度、紙はキャプチャと検証パッケージから復帰障害情報を焦点を当てて
参考:
https://mp.weixin.qq.com/s/EaZxYKyC4L_EofWdtyBCpw
https://www.jianshu.com/p/bcc5a3c86480
検証は例外メッセージをキャプチャするために失敗しました
@ControllerAdvice パブリッククラスWebExceptionHandler { //ダウン続けコードを見る前に、エンティティスローされた例外を要求した後、認証@Validパス検証の失敗を使用して要求処理をゲット @ExceptionHandler(BindException.class)を @ResponseBody 公共ResponseVO BindExceptionHandler(EはBindExceptionを){ 文字列メッセージ= e.getBindingResult()getAllErrors()ストリーム()地図(DefaultMessageSourceResolvable :: getDefaultMessage).collect(Collectors.joining(...)); 新しい新しいResponseVO(メッセージ)を返す; } //パラメータフォーマット処理要求障害後スローされた例外がエラー@RequestParam javax.validation.ConstraintViolationExceptionで検証 @ExceptionHandler(ConstraintViolationException.class) @ResponseBody 公共ResponseVO ConstraintViolationExceptionHandler(ConstraintViolationException E){
。。文字列メッセージ= e.getConstraintViolations()ストリーム()マップ(ConstraintViolation ::のgetMessage).collect(Collectors.joining())。 新しいResponseVO(メッセージ)を返します。 } //处理请求参数格式错误@RequestBody上検証失败后抛出的异常是MethodArgumentNotValidException异常。 @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody 公共ResponseVO MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException電子){ 文字列メッセージ= e.getBindingResult()。getAllErrors( ).stream()マップ(DefaultMessageSourceResolvable :: getDefaultMessage).collect(Collectors.joining(。))。 新しいResponseVO(メッセージ)を返します。 } }
例として与えられたリクエストパラメータは、その後、むしろよりはBindException ConstraintViolationExceptionとMethodArgumentNotValidExceptionを投げます
@RestController @RequestMapping( "試験") パブリッククラスTestController { ( "払い戻し")を@GetMapping 公衆ResponseVO払い戻し(@Valid RefundRequest要求)例外を{スロー 新しい新しいResponseVOを(返す); } } @Data パブリッククラスRefundRequest実装シリアライズ{ @NotBlank (メッセージ=「注文番号を空にすることはできません」) プライベート文字列注文ID、 @Min(値= 0、メッセージ=「消費量の量は負にすることはできませんです」) プライベートINT orderAmt; }
あなたは、複数の検証はリクエストパラメータを失敗した場合は、ヒット最初のチェックが例外をスロー失敗し、次のように、次のチェック異常なパラメータ、設定はありません
@Configuration パブリッククラスのWebConfig { @Bean 公共バリバリ(){ ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configureは() //フェイルファーストはない、コンテキストの検証の失敗が発生した場合、直ちに終了を確認手段その後の検証。 (真の).failFast .buildValidatorFactory(); 戻りvalidatorFactory.getValidator(); } @Bean 公共MethodValidationPostProcessor methodValidationPostProcessor(){ MethodValidationPostProcessor methodValidationPostProcessor新しい新しいMethodValidationPostProcessor =(); methodValidationPostProcessor.setValidator(バリ())。 methodValidationPostProcessorを返します。 } }