Struts 2 + AJAX + JPA + Spring – Parte II

 

Validação de Dados no Struts 2

Vamos começar a ver como validamos dados de entrada do usuário usando o Struts 2.

 

Para validarmos a entrada de dados dos atributos de uma action é necessário criar um arquivo xml que segue o padrão nomeDaAction-validation.xml, observe o exemplo na listagem 6.

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

              "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

              "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

             

<validators>

 

      <field name="contato.pessoa.nome">

            <field-validator type="requiredstring">

                  <message>Digite o nome</message>

            </field-validator>

      </field>

     

      <field name="contato.pessoa.dataDeNascimento">

            <field-validator type="date">

                  <message>Selecione uma data</message>

            </field-validator>

      </field>

     

      <field name="contato.pessoa.sobreNome">

            <field-validator type="requiredstring">

                  <message>Digite o sobrenome</message>

            </field-validator>

      </field>

 

      <field name="contato.email">

            <field-validator type="email">

                  <message>Digite um email válido</message>

            </field-validator>

      </field>

 

      <field name="contato.telefone.ddd">

            <field-validator type="requiredstring">

                  <message>Digite um código DDD</message>

            </field-validator>

      </field>

 

      <field name="contato.telefone.numero">

            <field-validator type="requiredstring">

                  <message>Digite o número do telefone</message>

            </field-validator>

      </field>

 

</validators>

Listagem 6 – InsereContatoAction-validation.xml         

 

Este arquivo, o InsereContatoAction-validation.xml deve assim como qualquer outro arquivo xml de validação ficar no mesmo pacote que a action, no nosso caso estará dentro do pacote br.jm.actions.

 

A validação é configurada entre o elemento raiz <validators/> dentro informamos os <field/> (campos), que deverão ser validados e como fazer essa validação.

 

A tag <field/> tem como parâmetro o nome do atributo que deve ser validado, no nosso caso como esta dentro de um objeto contato basta escrevermos os atributos com o nome exato da classe que pertence no parâmetro name, aqui também são utilizados os métodos getters e setters da propriedade, então se não tiverem não ira funcionar.

 

Também configuramos o tipo de validação desta propriedade utilizando o parâmetro <filed-validator/> que recebe o tipo de validação que deve ser feita, no caso do nome, sobreNome, ddd e numero são utilizados o tipo requiredstring que significa que deve ser informado uma string, o usuário tem que digitar algum valor.

 

Como já temos alguns tipos comuns fornecidos pelo struts que é o caso do tipo date, email, vocês podem ver que nossa validação do atributo email é do tipo email, logo deverá ser informado uma string no formato de um endereço de email válido.

 

No atributo dataDeNascimento é o tipo date que já definido pelo Struts válida a entrada de uma data, existem outros tipos interessantes, por exemplo uma validação de um atributo do tipo inteiro (Integer).

 

<field name="numeroExemplo">

      <field-validator type="int">

            <param name="max">5</param>

                  <message>Digite um número entre 2 e 5 válido</message>

            <param name="min">2</param>

      </field-validator>

</field>

 

Define que o numeroExemplo deve ser um número entre 5 e 2, muito simples validação no Struts 2, não!?!

 

No caso de nossa tela de login também temos algumas validações como na listagem 7.

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

              "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

              "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

             

<validators>

 

      <field name="login">

            <field-validator type="requiredstring">

                  <message>É necessário digitar o login</message>

            </field-validator>

      </field>

 

      <field name="senha">

            <field-validator type="requiredstring">

                  <message>É necessário digitar a senha</message>

            </field-validator>

      </field>

 

</validators>

Listagem 7 – LoginAction-validation.java

 

Tanto o login quanto a senha devem ser informados, caso contrário irá ser exibido os erros na tela do usuário, conforme a figura 1.

 

jpmdsajsp1fig01.jpg
Figura 1 – Mensagem de erros de validação do login

 

Observem agora a tela de cadastro de um novo contato, que também esta validando os dados de entrada do formulário.

 

jpmdsajsp1fig02.jpg
Figura 2 - Mensagem de erros de validação do formulário de cadastro

        

Sempre que houver algum erro na validação será exibido as mensagens como demonstradas acima, não é mais necessário informar aonde será exibido o erro como no Struts 1x que tínhamos que utilizar uma tag, mas isso também pode ser feito nessa nova versão, mas não utilizaremos neste artigo.

 

Note que nossa validação “pisca” a tela, para isso não acontecer basta configurarmos o tema de nosso form na página jsp como AJAX e configurar o servlet do dwr que é utilizada para validação pelo Struts 2 no web.xml como a listagem 7 mostra.

Leia todos os artigos da série