2017-09-06 10 views
1

私はgetMappingとpathValueとコントローラのメソッドを持っていますコードはエラーを出すことはありませんが、プログラムは自分のカスタム検証クラスには絶対に入りません。春ブーツHTTP GETカスタム検証

¿この問題を解決するにはどうすればよいですか? ¿パスの変数をカスタム検証で検証するにはどうすればよいですか?

答えて

1

私は私の問題を解決しました。春はパス変数を検証するためにいくつかの問題を抱えている... まず、あなたがこのようなMethodValidationPostProcessorで設定クラスを追加する必要があります。

/** 
* this class is required to use our custom path variable validation on 
* the controller class 
*/ 
@Configuration 
class ValidatorConfiguration { 

    @Bean 
    MethodValidationPostProcessor methodValidationPostProcessor() { 
    return new MethodValidationPostProcessor() 
    } 
} 

さて、コントローラクラスに、@Validated注釈を追加することが重要です

@RestController 
@Validated 
class YourController class { 
} 

今パス変数のカスタム検証はつもり作品は、あなたが例外をキャッチしたい場合は、お使いのコントローラにこのメソッドを追加し、次のとおりです。

@ControllerAdvice 
class GlobalExceptionHandler { 
    @ExceptionHandler(value = [ ConstraintViolationException.class ]) 
    @ResponseStatus(value = HttpStatus.BAD_REQUEST) 
    String handle(ConstraintViolationException e) { 
     Set<ConstraintViolation<?>> violations = e.getConstraintViolations() 
     StringBuilder strBuilder = new StringBuilder() 
     for (ConstraintViolation<?> violation : violations) { 
      strBuilder.append(violation.getMessage() + "\n") 
     } 
     return strBuilder.toString() 
    } 
}