(仅在测试中使用)我有依赖项(没有spring或DI容器)
testCompile("javax.validation:validation-api:2.0.1.Final")
testCompile("org.hibernate.validator:hibernate-validator:6.0.13.Final")
testCompile("org.glassfish:javax.el:3.0.0")
我可以通过
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
violations = validator.validate(myDto);
myDto在哪里
@RestrictionsAreValid
public class MyDto {
@NotNull
@Positive
private Integer value;
}
哪里
@Target(TYPE_USE)
@Retention(RUNTIME)
@Constraint(validatedBy = RestrictionsAreValidImpl.class)
public @interface RestrictionsAreValid {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
哪里
public class RestrictionsAreValidImpl implements ConstraintValidator<RestrictionsAreValid, MyDto> {
@Override
public boolean isValid(MyDto myDto, ConstraintValidatorContext context) {
some code
}
}
在这个验证器中,所有的工作都很完美,但没有任何注释avax。验证。限制。NotNull
或javax。验证。限制。积极的
在现场发挥作用,他们只是被忽略了
请帮忙。断然的
很抱歉,我的真实案例是相互嵌套的DTO,所以只有高级类经过验证,但没有嵌套。
@RestrictionsAreValid
public class MyDto {
@Valid // this annotation solve problem, and so on deeper in stricture
private Map<String, AnotherDto> map;
}
而另一个有注释的字段未经验证。当我在map
字段中添加@Valid
时,它开始正常工作
对于我使用的课程,如下所示:
@Documented
@Constraint(validatedBy = RestrictionsAreValidImpl.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RestrictionsAreValid {
/**
* message for exceptional case.
*
* @return message
*/
String message() default "";
/**
* Groups allow you to restrict the set of constraints applied during validation.
*
* @return arrays of group classes.
*/
Class<?>[] groups() default {};
/**
* Payloads can be used by clients of the Bean Validation API to assign custom payload objects to a constraint.
* This attribute is not used by the API itself.
*
* @return arrays of payload classes.
*/
Class<? extends Payload>[] payload() default {};
}
public class RestrictionsAreValidImpl implements ConstraintValidator<RestrictionsAreValid, MyDto> {
@Override
public boolean isValid(MyDto myDto, ConstraintValidatorContext context) {
some code
}
}
而不是DTO:
@RestrictionsAreValid
public class DTO{
}
我正在尝试设置一个验证来比较两个日期。一个日期应该比另一个日期短。 此外,我为我的两个约会都创建了一个自定义约束。但问题是,我的注释接口无法处理非原始数据类型。 这是我的代码:(我知道这是错误的,但如果我展示我的源代码,也许你可以理解我的问题) 豆子: 注释界面: 所以这里有一个问题:我试图将类型放入类型。但是,如果我将我的和声明为,则存在一个问题: 还有其他方法来比较两次约会吗? 我错过了什么?
我一直在尝试单元测试(不运行Spring容器)我的自定义约束注释,但当我运行测试时,会抛出NullPointerException,我不知道为什么会发生这种情况。 NullPointerException指出Validator类中的。 我一直在关注这个答案https://stackoverflow.com/a/41671471/9377513当我写测试的时候。但我不知道为什么这种方法在我的情况下不
我有一个使用javax注释的jax-rs项目(
我想知道是否有可能将一些自定义类型的新约束验证器注册到Bean验证规范定义的注释中。例如,让我们想象一下,我有一个类,它累加了几个int值 我想注册一个自定义约束验证器来支持这种类型的@正向注释(而不是创建自定义注释)。 这样以后我就可以使用这个:
我使用的是Swagger(1.5.8),我想让我的定义检测DTO上的JSR-303注释,这样我就可以记录API的验证约束。 我希望注释(如本例)会显示关于最小值(44)的一些信息,但它不会。 由此产生的是: Swagger已经关闭了该功能的拉取请求,但我不清楚它在Swagger定义中的位置/方式。 我希望能够做这样的事情: 配置Swagger模块/插件以启用和等功能的首选方法是什么,以便他们检查我
我有以下验证器,用于验证更新请求。 object.getIdCreditor()有一个值,但是findById方法的执行["CreditorRepository.findById(object.getIdCreditor())" ] 进入NullPointer异常 我不明白怎么了。