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 nomemessage>
field-validator>
field>
<field name="contato.pessoa.dataDeNascimento">
<field-validator type="date">
<message>Selecione uma datamessage>
field-validator>
field>
<field name="contato.pessoa.sobreNome">
<field-validator type="requiredstring">
<message>Digite o sobrenomemessage>
field-validator>
field>
<field name="contato.email">
<field-validator type="email">
<message>Digite um email válidomessage>
field-validator>
field>
<field name="contato.telefone.ddd">
<field-validator type="requiredstring">
<message>Digite um código DDDmessage>
field-validator>
field>
<field name="contato.telefone.numero">
<field-validator type="requiredstring">
<message>Digite o número do telefonemessage>
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
A tag
Também configuramos o tipo de validação desta propriedade utilizando o parâmetro
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">5param>
<message>Digite um número entre 2 e 5 válidomessage>
<param name="min">2param>
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 loginmessage>
field-validator>
field>
<field name="senha">
<field-validator type="requiredstring">
<message>É necessário digitar a senhamessage>
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.
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.
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.
Fonte: Struts 2 + AJAX + JPA + Spring – Parte II