Estou utilizando este validator package org.hibernate.validator.internal.constraintvalidators.hv.br;, desta maneira.
if (!new CPFValidator().isValid("60906606047", null)) {
throw new CpfException("CPF inválido !");
}
Este metodo é da classe do CPF
@Override
public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
if ( value == null ) {
return true;
}
if ( DIGITS_ONLY.matcher( value ).matches() ) {
return withoutSeparatorMod11Validator1.isValid( value, context )
&& withoutSeparatorMod11Validator2.isValid( value, context );
}
else if ( SINGLE_DASH_SEPARATOR.matcher( value ).matches() ) {
return withDashOnlySeparatorMod11Validator1.isValid( value, context )
&& withDashOnlySeparatorMod11Validator2.isValid( value, context );
}
else {
return withSeparatorMod11Validator1.isValid( value, context )
&& withSeparatorMod11Validator2.isValid( value, context );
}
}
Quando ele entra aqui;
withoutSeparatorMod11Validator1.isValid( value, context ), ele só retorna a primeira posição e depois dá erro
Mas dá erro assim:
Cannot read the array length because “weights” is null
Erros que eu, mas não sei se ajuda
O que pode ser ?
Tem cara de bug, pois o customWeights
não pode ser null
.
Se quiser, pode copiar minha classe de validação e/ou geração de CPF e CNPJ:
https://github.com/staroski/tools/blob/master/src/main/java/brdocs/br/com/staroski/tools/brdocs/Documentos.java
Aí basta substituir esse código:
if (!new CPFValidator().isValid("60906606047", null)) {
throw new CpfException("CPF inválido !");
}
Por esse:
if (!Documentos.cpfValido("60906606047")) {
throw new CpfException("CPF inválido !");
}
1 curtida
Entendi. Infelizmente não posso, pois não deixam eu colocar outras dependências …
Você não precisa incluir dependência aos fontes do meu GIT.
Copia os métodos da classe Documentos
pro seu fonte e seja feliz.
![:man_shrugging: :man_shrugging:](https://www.guj.com.br/images/emoji/twitter/man_shrugging.png?v=9)
1 curtida
Quando o projeto não é nosso, infelizmente é assim ![:joy: :joy:](https://www.guj.com.br/images/emoji/twitter/joy.png?v=9)
Você não está fazendo uma manutenção nesse código?
Então como é que você não pode escrever código nele?
Não entendi.
1 curtida
Mas o que teria que colocar no segundo parametro ?
if (!new CPFValidator().isValid("60906606047", null)) {
throw new CpfException("CPF inválido !");
}
Estou procurando desde ontem e não acho nada a respeito
Não conheço essa API do CPFValidator
mas você já experimentou informar o CPF no formato abaixo?
if (!new CPFValidator().isValid("609.066.060-47", null)) {
throw new CpfException("CPF inválido !");
}
1 curtida
Sim
609066060-47, 60906606047 e 609.066.060-47
Faz alguns anos que não uso Hibernate Validators, mas até onde eu sei, você não instancia eles e sai usando, ao invés disso você anota os atributos das entidades que deseja validar.
No seu caso não seria simplesmente anotar o atributo que corresponde ao CPF com a anotação @CPF
?
1 curtida
Neste caso especifico, não deve ser utilizado assim.
Mas vou utilizar o que vc me passou, que está funcional
Eu descobri o problema. Tem que chamar o método initialize(). Extrai para uma variável assim:
var cpfValidator = CPFValidator()
cpfValidator.initialize(null)
cpfValidator.isValid(chave, null)
pode passar null também