gpt4 book ai didi

java - 我可以在 Spring boot 自定义 validator 中自动连接一个存储库吗

转载 作者:行者123 更新时间:2023-11-30 07:29:24 24 4
gpt4 key购买 nike

我使用 Spring Boot 创建一个自定义 validator :

public class AberturaMatriculaValidator implements Validator {
@Autowired
IQualificacao iQualificacao;
@Override
public boolean supports(Class<?> clazz) {
return AberturaMatricula.class.equals(clazz);
}

@Override
public void validate(Object target, Errors errors) {//TODO Necessita Validações mais complexas, como verificar se o valor existe em uma determinada lista e tal.
AberturaMatricula obj = (AberturaMatricula) target;
List<TbQualificacao> qualificacaoList = iQualificacao.findByNatureza("IMOVEIS");
System.out.println(qualificacaoList.size());
}
}

并将他添加到我的 Controller 中:

@RestController
@RequestMapping("/ri")
public class RIController {
@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator());
}

@RequestMapping(value = "/selo/abertura/", method = RequestMethod.POST)
public AberturaMatricula selarAbertura(@RequestBody @Valid AberturaMatricula aberturaMatricula){
...
}
}

所以在我的 validator 中

@Autowired
IQualificacao iQualificacao;

不工作,如果我把这个存储库放在我的 Controller 中,工作正常

---------------------解决方案(感谢@sanluck)----------

我的 validator :

public class AberturaMatriculaValidator implements Validator {

private IQualificacao iQualificacao;

public AberturaMatriculaValidator(IQualificacao iQualificacao) {
this.iQualificacao = iQualificacao;
}

@Override
public boolean supports(Class<?> clazz) {

return AberturaMatricula.class.equals(clazz);
}

@Override
public void validate(Object target, Errors errors) {//TODO Necessita Validações mais complexas, como verificar se o valor existe em uma determinada lista e tal.
AberturaMatricula obj = (AberturaMatricula) target;

}
}

在我的 Controller 中:

@RestController
@RequestMapping("/ri")
public class RIController {

@Autowired
IQualificacao iQualificacao;

@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator(iQualificacao));
}
...
}

最佳答案

@Configuration 添加到您的应用程序以注册您的 AberturaMatriculaValidator:

@Configuration
public class ValidationConfig {

@Autowired
IQualificacao iQualificacao;

@Bean
public AberturaMatriculaValidator aberturaMatriculaValidator() {
return new AberturaMatriculaValidator(iQualificacao);
}
}

此外,您还必须创建构造函数AberturaMatriculaValidator(IQalificacao iqualificao)

关于java - 我可以在 Spring boot 自定义 validator 中自动连接一个存储库吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368190/

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