-
Notifications
You must be signed in to change notification settings - Fork 341
Anotando o modelo
Se você já está familiarizado com as anotações, esta sintaxe será familiar.
public class Empresa {
// não nulo com 20 caracterers no máximo
@Length(max=20)
@NotNull
private String nome;
private String cnpj;
public String getNome() {
return nome;
}
// Uma representação válida para CNPJ, não nula.
// Podemos anotar tanto os atributos quanto seus métodos getters
@CNPJ
@NotNull
public String getCnpj() {
return cnpj;
}
}
O exemplo acima mostra apenas validação em propriedades públicas, mas você também pode anotar campos com qualquer visibilidade.
public class Pessoa {
private String nome;
@NotNull
@CPF
private String cpf;
...
}
Por padrão CPFs com todos os dígitos iguais são considerados inválidos, para alterar esse comportamento basta usar o atributo ignoreRepeated
da anotação @CPF:
@CPF(ignoreRepeated=true) // default é false
private String cpf;
Você pode também inserir anotações em interfaces. O Bean Validation irá verificar todas as superclasses e interfaces extendidas ou implementadas por qualquer bean fornecido para carregar as anotações apropriadas.
public interface EmpresaPrivada {
@NIT
String getPis();
...
}
public class Acme implements EmpresaPrivada {
public String getPis(){...}
...
}
A propriedade PIS será verificada quando a classe Acme for validada.
A validação de Inscrição Estadual é um pouco diferente, já que além do número da IE também é necessário informar qual o estado, já que as regras mudam de estado para estado.
@IE
public class PrestadoraDeServicos {
private String ie;
private String estado;
public PrestadoraDeServicos(String ie, String estado) {
this.ie = ie;
this.estado = estado;
}
public String getIe() {
return ie;
}
public String getEstado() {
return estado;
}
}
Por padrão o validador busca os dados através dos métodos getIe() e getEstado(). Opcionalmente, podemos redefinir as propriedades através da anotação.
@IE(ieField="inscricaoEstadual" , estadoField="estadoDaInscricaoEstadual")
public class PrestadoraDeServicos {
private String ie;
private String estado;
public PrestadoraDeServicos(String ie, String estado) {
this.ie = ie;
this.estado = estado;
}
public String getInscricaoEstadual() {
return ie;
}
public String getEstadoDaInscricaoEstadual() {
return estado;
}
}