FONT-SIZE: 12pt; FONT-FAMILY: 'Verdana','sans-serif'">Validação na web
O Struts 1.1 integra recursos sofisticados de validação de dados em aplicações web
O framework de desenvolvimento web Struts pode ser visto, hoje, como um padrão para a construção de aplicações web confiáveis e modulares. No entanto, um dos pontos falhos da sua distribuição básica, na versão 1.0, era a inexistência de um meca¬nismo de validação de dados padronizado. Apesar de aquela versão incluir bibliotecas de validação externas – o pacote Struts Validator –, o recurso não era explorado em todo o seu potencial. Em alguns casos, todo o processo de validação era refeito a cada tela, levando à redundância de código e à disseminação de maneiras distintas de resolver um mesmo problema.
Incorporado oficialmente à versão 1.1 do Struts, o Validator visa centralizar o processo de validação de dados, reduzirem a redundância de código e desacoplar o código de validação, além de permitir que a validação de formulários seja realizada tanto do lado servidor (no container web), quanto do lado do cliente (no navegador), com código Java Script gerado automaticamente.
Este texto pressupõe conhecimentos básicos sobre o Struts (veja uma introdução ao framework no artigo “Struts Essencial” na Edição 6).
Configurando o ambiente
O Validator é um plug-in do Struts 1.1 e deve ser registrado com o framework no arquivo struts-config.xml. A Listagem 1 mostra a configuração necessária.
Nota: a aplicação-modelo struts-blank. war incluída na distribuição do Struts já configura o plug-in de validação.
Nos arquivos referenciados no parâmetro pathnames – validation. xml e validation-rules.xml – são definidas as validações para os formulários, além de regras e classes de validação predefinidas (veremos mais sobre esses arquivos, adiante).
Mecanismos de validação
Tradicionalmente, a validação de formulários no Struts era feita no método validate dos Action Forms, chamado quando o formulário é submetido. Usando o Validator, as validações são especificadas em arquivos de configuração e classes externas. Em vez de criar descendentes de Action Form, herda-se da subclasse Validator Form. Esta contém uma implementação padrão do método validate, que lê os arquivos de configuração XML ativando as validações especificadas. A Listagem 2 mostra um exemplo de formulário validado (chamado CadastrarUsuarioForm). Note que nenhum código de validação é inserido na classe.
Como de costume, o formulário deve ser registrado no arquivo struts-config. xml. A Listagem 3 contém a configuração necessária.
Validadores e mensagens
O Struts 1.1 inclui um conjunto de “validadores” predefinidos, para checagens de tipos primitivos, datas, intervalos e expressões regulares, entre outros (veja a Tabela 1), especificados no arquivo validation-rules. xml. A Listagem 4, por exemplo, mostra a declaração do validador intRange, que verifica se o valor de um campo está entre dois limites inteiros.
Como se vê na listagem, os validadores são definidos usando o elemento <validator>, que define atributos especificando cada detalhe da validação. No exemplo, intRange é definido pelo método validateIntRange da classe org.apa
che.struts.validator.FieldChecks.
A definição de um validador inclui ainda outras informações importantes:
• O atributo depends determina que o validador somente será executado após todos os outros validadores listados como dependentes. O int Range, por exemplo, é executado somente quando um campo contiver um valor inteiro, assim é definido como dependente do validador predefinido integer (não mostrado aqui);
• O elemento <javascript> define um trecho de código para uso na validação no lado do cliente. O código Java Script é declarado no corpo do elemento e referenciado pelo atributo method;
• msg define o identificador da mensagem exibida se a validação gerar um erro; a mensagem deve ser especificada em um dos arquivos de recursos do Struts. A
Listagem 5 mostra o arquivo Application
Resources.properties usado no exemplo, com mensagens traduzidas. Observe que ao final são definidas mensagens para os campos do Validator Form criado anteriormente – essa separação facilita a manutenção e simplifica a internacionalização das aplicações (um dos pontos fortes do Struts).
...