Java EE/Restrições Embutidas: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
Conteúdo apagado Conteúdo adicionado
Criou a página com "O pacote <code>[https://docs.oracle.com/javaee/7/api/javax/validation/constraints/package-summary.html javax.validation.constraints]</code> contém as restrições definidas..."
(Sem diferenças)

Revisão das 13h14min de 9 de dezembro de 2015

O pacote javax.validation.constraints contém as restrições definidas pela API.

Abaixo são descritas todas as anotações contidas no pacote citado. Caso um tipo primitivo seja utilizado, ele será convertido no objeto wrapper correspondente para a realização da validação.


@NotNull, conforme vista na seção anterior, define que a variável anotada não pode ser nula. Qualquer tipo de variável de referência pode ser utilizado.

@Null restringe de forma oposta à @NotNull, definindo que a variável anotada deve apenas ser null.

@Null
Object obj;

@AssertTrue define que a variável deve ser true. Já @AssertFalse define o contrário. Obviamente apenas os tipos Boolean e boolean podem ser utilizados.

@AssertFalse
Boolean ligado; //Caso vincule com um componente <h:selectBooleanCheckbox> não esqueça de inicializá-la com true ou false!

@AssertTrue
boolean funcionando;

@Max restringe a variável a armazenar valor igual ou menor ao que essa anotação define. @Min restringe de forma inversa. Apenas valores do tipo long são suportados no elemento value dessas anotações.

BigDecimal, BigInteger, long, int, short, byte e seus objetos wrapper respectivos são suportados pelas anotações. double e float não são suportados devido ao seu erro de arredondamento.

Adicionalmente o tipo String também é suportado apesar de não constar na especificação.

@Max(42)
BigDecimal num;

@Min(50)
int valor; //Será inicializado com 0 caso vinculado com <h:inputText>, porém a validação só ocorrerá na primeira submissão dos dados para o servidor.

@DecimalMax e @DecimalMin são similares às de @Max e @Min, com a diferença de que seus elementos value são de tipo String e suportam valores decimais (na implementação esse elemento é convertido em BigDecimal).

@DecimalMax("200.77")
long num;

@DecimalMin(".5")
Short valor;

@Digits restringe a quantidade máxima de dígitos que uma variável pode conter. O elemento int integer restringe os dígitos inteiros e o int fraction os decimais. Ambos os elementos são obrigatórios.

BigDecimal, BigInteger, CharSequence (StringBuilder e String p. ex.), long, int, short, byte e seus objetos wrapper respectivos são suportados pelas anotações.

Note que ao utilizar alguma classe que implemente CharSequence como tipo de uma variável anotada com @Digits somente números serão valores válidos.

@Digits(integer = 2, fraction = 1)
String valor; 

@Digits(integer = 2, fraction = 1)
Long numero; //Obviamente fraction é despropositado aqui, mas a funcionalidade de integer permanece.

@Size restringe a quantidade mínima e/ou máxima de caracteres que a variável anotada pode conter e de elementos que uma coleção pode ter. O elemento int min define o a quantidade mínima e o int max a máxima. Ambos os elementos são opcionais, seus valores padrão são 0 e Integer.MAX_VALUE respectivamente.

CharSequence, Collection (ArrayList e p. ex.), Map e vetores são tipos suportados.

@Size(min = 1, max = 5)
ArrayList<SelectItem> vetor; 

@Size(min = 1, max = 5)
String palavra;

@Pattern restringe o conteúdo da variável obedecer à uma expressão regular. O elemento obrigatório String regexp define a expressão regular.

@Pattern(regexp = "[A-Ea-e]")
String categoriaCNH;

O elemento opcional opcional Pattern.Flag[] flags define alterações sobre a expressão regular especificada. Seu padrão é vazio.

@Pattern(regexp = "[A-E]", flags = Pattern.Flag.CASE_INSENSITIVE)
String categoriaCNH; //a flag definida permite que as letras sejam válidas maiúsculas ou não.

@Future e @Past definem que as variáveis representem apenas data futura ou passada, respectivamente.

Apenas java.util.Date e Calendar são tipos suportados para essas anotações. Provavelmente na próxima versão da especificação Bean Validation os tipos LocalDate e LocalDateTime serão suportados.

@Future
Date previsaoFormacao;

@Past
Calendar aniversario;