ホームページ >Java >&#&チュートリアル >SpringBoot はパラメータ検証に検証をどのように使用しますか?
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.2.Final</version> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>1.4.0.RELEASE</version> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
fail_fast
属性を設定する場合、true
は、パラメータが失敗した場合は、そのパラメータが返されます。デフォルトでは、すべてのパラメータがテストされるため、構成ファイルが必要です
import org.hibernate.validator.HibernateValidator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; import org.springframework.validation.beanvalidation.SpringValidatorAdapter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; /** * hibernate参数验证配置 */ @Configuration public class ValidatorConfig extends WebMvcConfigurerAdapter { @Bean public Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configure() // 将fail_fast设置为true即可,如果想验证全部,则设置为false或者取消配置即可 .failFast(true) // .addProperty("hibernate.validator.fail_fast", "true") .buildValidatorFactory(); return validatorFactory.getValidator(); } /** * requestParam方式的校验 * @return */ @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); methodValidationPostProcessor.setValidator(validator()); return methodValidationPostProcessor; } @Override public org.springframework.validation.Validator getValidator() { return new SpringValidatorAdapter(validator()); } }
#で動作します#InheritanceメソッドValidationPostProcessorはrequestParam
WebMvcConfigurerAdapter そして、Spring のリクエスト検証
Validator が上記のバリデーターを使用してセット
failFast を取得できるように
getValidator() メソッドを書き換えます。詳細については、
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#mvcValidatorMethod
/** * hibernate-valid实体类形式接受参数验证失败 * @param ex * @return */ @ExceptionHandler(BindException.class) @ResponseBody public WebResult validationErrorHandler(BindException ex) { List<String> collect = ex.getBindingResult().getAllErrors() .stream() .map(ObjectError::getDefaultMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";")); } /** * hibernate-valid实体类形式接受参数验证失败 * @param ex * @return */ @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public WebResult validationErrorHandler(MethodArgumentNotValidException ex) { List<String> collect = ex.getBindingResult().getAllErrors() .stream() .map(ObjectError::getDefaultMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";")); } /** * RequestParam方式参数校验 * @param ex * @return */ @ExceptionHandler(ConstraintViolationException.class) @ResponseBody public WebResult validationErrorHandler(ConstraintViolationException ex) { List<String> errorInformation = ex.getConstraintViolations() .stream() .map(ConstraintViolation::getMessage) .collect(Collectors.toList()); return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(),StringUtils.join(errorInformation, ";")); }
### のエンティティの前に追加するだけです。@RequestParam
をを使用してパラメータ検証を直接記述する場合は、クラスまたは対応するメソッドに
Validatedアノテーションを追加します。エンティティ クラスがそれを受け入れる場合は、
Validatedアノテーションをパラメータに追加します。
@Valid
以上がSpringBoot はパラメータ検証に検証をどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。