Java EE/Bean Validaton: diferenças entre revisões

[edição verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Linha 80:
Object obj;
</source>
<hr>
 
<code>@AssertTrue</code> define que a variável deve ser <code>true</code>. Já <code>@AssertFalse</code> define o contrário. Obviamente apenas os tipos <code>Boolean</code> e <code>boolean</code> podem ser utilizados.
Linha 89 ⟶ 90:
boolean funcionando;
</source>
<hr>
 
<code>@Max</code> restringe a variável a armazenar valor igual ou menor ao que essa anotação define. <code>@Min</code> restringe de forma inversa. Apenas valores do tipo <code>long</code> são suportados no elemento <code>value</code> dessas anotações.
 
<code>BigDecimal</code>, <code>BigInteger</code>, <code>long</code>, <code>int</code>, <code>short</code>, <code>byte</code> e seus objetos wrapper respectivos são suportados pelas anotações. <code>double</code> e <code>float</code> não são suportados devido ao seu erro de arredondamento.
 
Adicionalmente o tipo <code>String</code> também é suportado apesar de não constar na especificação.
<source lang="Java">
@Max(42)
Linha 98 ⟶ 102:
 
@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.
int valor;
</source>
<hr>
 
<code>@DecimalMax</code> e <code>@DecimalMin</code> são similares às de <code>@Max</code> e <code>@Min</code>, com a diferença de que seus elementos <code>value</code> são de tipo <code>String</code> e suportam valores decimais (na implementação esse elemento é convertido em BigDecimal).
 
<source lang="Java">
@DecimalMax("200.77")
long num;
 
@DecimalMin(".5")
*<code>@DecimalMax</code> e <code>@DecimalMin</code> definem
intShort valor;
</source>
<hr>
 
<code>@Digits</code> restringe a quantidade '''máxima''' de dígitos que uma variável pode conter. O elemento <code>int integer</code> restringe os dígitos inteiros e o <code>int fraction</code> os decimais. Ambos os elementos são obrigatórios.
*<code>@Digits</code>
 
<code>BigDecimal</code>, <code>BigInteger</code>, <code>CharSequence</code> (<code>StringBuilder</code> e <code>String</code> p. ex.), <code>long</code>, <code>int</code>, <code>short</code>, <code>byte</code> e seus objetos wrapper respectivos são suportados pelas anotações.
 
Note que ao utilizar alguma classe que implemente <code>CharSequence</code> como tipo de uma variável anotada com <code>@Digits</code> somente números serão valores válidos.
 
<source lang="Java">
@Digits(integer = 2, fraction = 1)
String valor;
</source>
<hr>
 
<code>@Size</code> 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 <code>int min</code> define o a quantidade mínima e o <code>int max</code> a máxima. Ambos os elementos são opcionais, seus valores padrão são 0 e <code>Integer.MAX_VALUE</code> respectivamente.
 
<code>CharSequence</code>, <code>Collection</code> (<code>ArrayList</code> e <code></code> p. ex.), <code>Map</code> e vetores são tipos suportados.
 
<source lang="Java">
@Size(min = 1, max = 5)
ArrayList<Integer> vetor;
</source>
<hr>
 
<code>@Pattern</code> restringe o conteúdo da variável obedecer à uma expressão regular. O elemento <code>String regexp</code> define a expressão regular.
 
<source lang="Java">
@Pattern(regexp = "[A-Ea-e]")
String categoriaCNH;
</source>
 
<code>@Future</code> e <code>@Past</code> definem que as variáveis representem apenas data futura ou passada, respectivamente.
*<code>@Size</code>
 
*Apenas <code>@Futurejava.util.Date</code> e <code>@PastCalendar</code> definemsão tipos suportados para essas anotações.