gpt4 book ai didi

java - 如何使用包含存储库 bean 的自定义 validator 注释验证 @PathVariable

转载 作者:行者123 更新时间:2023-12-01 14:33:57 24 4
gpt4 key购买 nike

我知道如何验证 @PathVariable来自 https://stackoverflow.com/a/35404423/4800811
它与标准注释一起按预期工作,但不适用于使用 Repository bean 的定制注释。也许 bean 没有初始化,我最终得到了 NullPointerException访问端点时有@PathVariable验证。那么如何获得这份工作呢?

我的 Controller :

@RestController
@Validated
public class CustomerGroupController {
@PutMapping(value = "/deactive/{id}")
public HttpEntity<UpdateResult> deactive(@PathVariable @CustomerGroupEmpty String id) {

}
}

我的自定义 validator :
public class CustomerGroupEmptyValidator implements ConstraintValidator<CustomerGroupEmpty, String>{
@Autowired
private CustomerRepository repository;

@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// NullPointerException here (repository == null)
if (value!=null && !repository.existsByCustomerGroup(value)) {
return false;
}
return true;
}

}

我的自定义注释:
@Documented
@Constraint(validatedBy = CustomerGroupEmptyValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomerGroupEmpty {
String message() default "The customer group is not empty.";
Class<?>[] groups() default {};
Class<? extends Payload> [] payload() default {};
}

最佳答案

这篇文章中的代码是正确的,唯一的错误是 validator 也需要覆盖 initialize 方法。可能 user123 不正确配置存储库 bean,检查这个的简单方法是在配置类中手动定义它

关于java - 如何使用包含存储库 bean 的自定义 validator 注释验证 @PathVariable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51588843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com