Esse artigo faz parte da revista Java Magazine edição 31. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML. 

Mais Validação na Web

Criando e Entendendo Validadores Customizados no Struts

 

Saiba como criar validadores de dados customizados dentro do Struts e aumente a padronização e a produtividade em seus projetos web

 

Alexandre Denes dos Santos

 

Dentro da prática de desenvolvimento de sistemas, um dos conceitos chave é a padronização de funcionalidades comuns. A aplicação dessa prática leva a criação de bibliotecas, frameworks e vários tipos de componentes, aumentando a padronização do código e facilitando a manutenção e evolução do projeto.

O Struts, por exemplo, facilita o desenvolvimento de aplicações web fornecendo uma infra-estrutura MVC padronizada. E o próprio framework reutiliza vários componentes externos, como o Commons Validator, que é o tema deste artigo.

Entretanto, tenho visto que várias equipes de desenvolvimento param nesse ponto. São muito eficientes em não reinventar a roda e em utilizar projetos já conceituados para resolver problemas gerais. Só que pecam em não criar uma cultura de componentização e reutilização para resolver problemas específicos mas recorrentes, que não são total mente cobertos pelas

funcionalidades do framework.

Já vi projetos baseados no Struts que usam os validadores automáticos somente com as regras predefinidas (como campos requeridos, inteiros e máscaras). Mas quando precisam de alguma validação "regional", como CPF ou CNPJ, recorrem ao bom e velho include JavaScript, às vezes até esquecendo da revalidação no servidor. A questão principal é que essas validações específicas podem (e devem) ser incorporada ao Struts, permitindo que sejam utilizadas por toda a equipe em vários projetos, da mesma forma que os validadores predefinidos.

Neste artigo, vamos discutir os conceitos para a implementar e utilizar novos validadores no Struts, com foco em componentização e reuso.

 

Sobre os validadores no Struts

Em Struts e possível (e recomendado) que a validação de campos de formulários seja feita através dos validadores automáticos, implementados através do projeto Commons Validator. Por exemplo, imagine um campo de formulário web cujo valor precisa ser numérico. Uma forma popular de garantir isso é implementando código JavaScript que realize essa validação  no evento de submissão do formulário. Essa abordagem apresenta as seguintes características:

• Em todos os formulários que necessitarão desse tipo de validação, será necessário criar o método JavaScript de validação que normalmente é feito através dos includes. Isso amarra a lógica de dados (a regra de validação do campo) à camada de apresentação (o código JavaScript que ficará diretamente na página).

Toda validação de dados feita em JavaScript deverá ser refeita no servidor. Sem isso será fácil para o usuário burlar o mecanismo de validação – desabilitando a execução de JavaScript ou simplesmente passando os parâmetros manualmente na URL através de uma requisição HTTP do tipo GET.

 

Com os validadores automáticos em Struts, essa validação é feita simplesmente declarando (em um arquivo de configuração normalmente chamado de validation.xml) as regras de validação necessárias para as propriedades dos FormBeans da aplicação. Na página de formulário será gerado automaticamente o código JavaScript para validação no cliente e, no

servidor esses dados serão revalidados também de forma automática, permitindo uma grande reusabilidade das regras de validação - além de simplificar o próprio desenvolvimento do sistema, o que torna as validações quase transparentes para o desenvolvedor.

Vários validadores já vem por padrão junto com o Struts, o que resolve os problemas mais simples. A configuração desses validadores pode ser encontrada em qualquer bom material sobre Struts, por exemplo o artigo "Validação na Web" da Edição 7 [publicamos na Tabela 1 uma descrição breve dos validadores predefinidos, adaptada deste artigo].

A discussão que será aprofundada aqui e sobre a criação de validadores personalizados,

para atender a necessidades específicas de um grupo de aplicações.

 

Validador

Descrição

required

Determina que o campo é de preenchimento obrigatório

requireddif

Determina que o campo é de preenchimento obrigatório, se outro campo estiver preenchido

 

minlength, maxlength

Especificam o tamanho mínimo/máximo de conteúdo do campo

mask

Define uma "máscara" (expressão regular) para formatação do campo,

sendo usado o projeto Jakarta Regexp (jakarta.apache.org/regexp)

para a validação

 

byte, short, integer, long, float, double, date

Se o valor de um campo é do tipo byte, short, integer, long,

float, doubleb ou uma data

 

intRange, floatRange

Verificam se é um int/float dentro de uma faixa específicada

...

Quer ler esse conteúdo completo? Tenha acesso completo