任何进入CustomValidator实现的bean都始终为空。我使用的是Spring Boot 2,应用程序是REST API,我没有使用MVC。
我已经尝试了所有我读到的关于这件事的东西,但到目前为止运气都不好。
例如,这里的这个话题对我来说并不适用
否则我应该验证吗?,我已经坚持了2天了。
这是我的配置类:
@Configuration
public class Beans {
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:idiomas/idioma");
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(new Locale("es"));
return resolver;
}
@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
validatorFactoryBean.setValidationMessageSource(messageSource());
return validatorFactoryBean;
}
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true);
filter.setIncludePayload(true);
filter.setMaxPayloadLength(10000);
filter.setIncludeHeaders(true);
filter.setAfterMessagePrefix("REQUEST: ");
return filter;
}
}
我的CustomValidator如下所示:
public class AlmacenValidator implements ConstraintValidator {
@Autowired
private AlmacenService servicio;
@Autowired
private ApplicationContext contexto;
@Override
public void initialize(AlmacenValido constraintAnnotation) {
}
@Override
public boolean isValid(Almacen item, ConstraintValidatorContext context) {
//Database calls
}
JPA实体:
@Entity
@AlmacenValido
@Table(name = "almacenes")
public class Almacen {
//Entity fields
}
注释:
@Documented
@Retention(RUNTIME)
@Target({ TYPE, FIELD, ANNOTATION_TYPE, PARAMETER })
@Constraint(validatedBy = AlmacenValidator.class)
public @interface AlmacenValido {
String message() default "{validacion.almacen}";
Class[] groups() default {};
Class[] payload() default {};
}
我已经为您创建了测试示例。请检查一下https://github.com/alex-petrov81/stackoverflow-answers/tree/master/validation-bean-injection
我正在开发spring mvc应用程序,我应该在spring mvc validator的基础上应用验证。第一步,我为类和设置控制器添加了注释,效果很好。现在我需要实现自定义验证器来执行复杂的逻辑,但我想使用现有的注释并添加额外的检查。 我的用户类: 我的验证器: 我的控制器: 那么,有可能同时使用自定义验证器和注释吗?如果是,怎么做?
表单验证发生在数据验证之后。如果你需要定制化这个过程,有几个不同的地方可以修改,每个地方的目的不一样。表单处理过程中要运行三种类别的验证方法。它们通常在你调用表单的is_valid() 方法时执行。还有其它方法可以触发验证过程(访问errors 属性或直接调用full_clean() ),但是通用情况下不需要。 一般情况下,如果处理的数据有问题,每个类别的验证方法都会引发ValidationErr
我有以下验证器,用于验证更新请求。 object.getIdCreditor()有一个值,但是findById方法的执行["CreditorRepository.findById(object.getIdCreditor())" ] 进入NullPointer异常 我不明白怎么了。
在我的FormGroup中,有一个FormArray包含n个FormControls,每个FormControls都有一个电子邮件验证器。 我希望我的FormArray能够知道是否有任何FormArray控件有电子邮件验证错误,如果有,则FormError errors属性应设置为。 为此,我编写了一个应用于FormArray的自定义验证器。但是,当FormControl元素被添加或从FormAr
我有一个可以创建和编辑组的应用程序。每个团体都有一个独特的头衔。当有人试图创建新组时,我会检查是否有具有该标题的组,如果有,则验证失败。问题是,当有人试图编辑组而不更改标题时,根据我的自定义验证,有一个组具有该标题(有人正在编辑的标题),而我的验证失败,因此用户无法保存该组。所以我想问一下,是否有人能解决这个问题。非常感谢您的回答! 我的班级 我的验证器接口 我的验证器
我想知道你是否可以使用vee validate插件编写自定义日期验证,其中结束日期不能小于开始日期?我到处寻找,我找不到确切的答案。 如果没有办法实现这一点,那么我可以凑合着没有它,但是,现在我已经在我的模板中实现了我的开始日期是: 我的脚本如下所示: 但是没有出现任何验证。我想我在我的脚本中丢失了一些东西,但我不确定如何将日期实现到那里。任何帮助将不胜感激。