Olá desenvolvedores, iremos aprender neste tutorial como validar campos simples com o Bean Validator, uma API – Application Programming Interface, que nos permite validar regras de restrição e/ou de negócio na camada de modelo.

No tutorial “BEAN VALIDATOR COM MAVEN” adicionamos a dependência ao projeto e assim, baixamos as bibliotecas necessárias ao correto funcionamento dessa especificação do JAVA EE. Também limpamos o cache do projeto preparando-o para as implementações que faremos neste tutorial.

VALIDANDO CAMPOS

Na implementação do campo nome, por exemplo, as restrições implementadas no lado do cliente, isto é, na tela, incluem se tratar de um campo obrigatório e a especificação de um número mínimo e máximo de caracteres permitidos. Neste último caso foi utilizada uma validação do próprio JSF – JavaServer Faces, por meio do componente f:validateLength.

No entanto, a validação que faremos agora, no componente h:inputText, referente ao campo sobrenome, será realizada no lado do servidor, com o Hibernate.  O primeiro passo é preceder o atributo com as anotações @NotEmpty do pacote org.hibernate.annotations e @NotNull do pacote javax.validation.constraints respectivamente.  A primeira determina que o campo não de pode ser vazio enquanto que a segunda determina que o campo não poderá ser nulo.

Assim, o atributo deverá ser precedido das respectivas anotações. A partir dessas anotações é possível inserir uma mensagem que será exibida para o usuário se o campo não for informado.

@NotEmpty(message=“O sobrenome deverá ser informado”)
@NotNull(message="O sobrenome deverá ser informado")
private String sobrenome;

O que acontece por “debaixo dos panos” é que quando o formulário é submetido, haverá uma tentativa de injetar os dados dentro do objeto pessoa, objeto qual trabalhamos no ManagedBean. Assim, quando adicionamos a anotação de restrição, o JSF automaticamente se integra ao Bean Validator aplicando a regra especificada.

ADENDO

Agora é preciso realizar alguns ajustes a aplicação, para que ela funcione de forma correta. Desse modo, adicionaremos ao componente que implementa o botão de “Excluir” o h:commandLink o atributo immediate.

O immediate tem a função de determinar em qual fase do ciclo de vida do JSF o componente será processado. Por padrão seu valor é false, assim, se o valor do atributo for true a ação será processada na fase de requisição. O mesmo raciocínio se aplica ao botão de “Editar” e “Limpar”.

<h:commandLink action= “#{pessoaBean.remove}” title=“Excluir” immediate=“true” >

EM POUCAS PALAVRAS

Neste tutorial implementamos uma validação de restrição, no lado do servidor, no campo de sobrenome com o Hibernate Validator. Para cada campo existe uma validação apropriada, como determinar o limite mínimo e máximo de caracteres e/ou limite mínimo e máximo a ser inserido em um dado campo, muito aplicado, em campos onde o usuário deverá informar a idade.