我創建一個自定義驗證與春季啓動:我能自動連接一個庫春天開機自定義驗證內部
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());
}
}
,並添加他在我的控制器:
@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){
...
}
}
所以我的驗證的
內@Autowired
IQualificacao iQualificacao;
不工作,如果我把這個存儲庫放在我的控制器中,工作正常
--------------------- SOLUTION(TKS爲@sanluck)----------
我的驗證:
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;
}
}
,並在我的控制器:
@RestController
@RequestMapping("/ri")
public class RIController {
@Autowired
IQualificacao iQualificacao;
@InitBinder("aberturaMatricula")
protected void initAberturaMatriculaBinder(WebDataBinder binder) {
binder.addValidators(new AberturaMatriculaValidator(iQualificacao));
}
...
}
IoC僅適用於Spring管理的bean。你的自定義驗證器不是一個。 – dambros
那麼,如何在需要獲取數據庫時驗證某些值?我試圖在我的Controller中自動驗證Validator,但沒有成功 –
您需要在Spring中註冊驗證器。檢查[this](http://stackoverflow.com/questions/3587317/autowiring-a-service-into-a-validator)。在此之後,你應該能夠在驗證器內部自動裝入東西。 – dambros