Ferramentas Utilizadas

Eclipse ,

Hibernate,

Struts 2,

Banco SQLServer

Partiremos direto para a classe que fará a verificação,

Neste caso foi feito uma validação para uma  novo tipo de data caso usuário entre com a mesma de uma forma incorreta, certo no struts 2 já existe por default essa validação , mas para entender como funciona não encontrei tipo melhor, esse caso de validação ficou  legal pois não depende do nome do campo que foi passado para verificação, super genérico.

ValidacaoData.java

 

package br.com.newValidacao.action;

import com.opensymphony.xwork2.validator.ValidationException;

import  com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class ValidacaoData extends FieldValidatorSupport {

public void validate(Object object) throws ValidationException {

String fieldName = getFieldName();

Object value = this.getFieldValue(fieldName, object);

//System.out.println(" Objet "+value);

if (value==null||value.toString()=="") {

addFieldError(fieldName, object);

}

}

}

Após desenvolver sua classe é necessário falar o nome do novo tipo de validação e a localização do mesmo, para fazer isso abra o arquivo validators.xml  este normalmente fica na pasta do seu projeto \src,

<validators>

-- aqui outros tipos ja default

<validator name="data" class="br.com.dmts.newValidacao.action.ValidacaoData"></validator>

</validators>

 Após este passo basta fazer sua verificação,na sua validação

Ex.

SeilaAction-validation.xml

<?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="campanha.dtInicio">

              <field-validator type="data">

                    <message>A data Inicial precisa ser preenchida.</message>

              </field-validator>

       </field>

       <field name="campanha.dtFim">

              <field-validator type="data">

                    <message>A data Final precisa ser preenchida.</message>

              </field-validator>

       </field>

      

      

</validators>

Caso queira uma validação mais especifica segue abaixo a verificação de Cnpj.

 

import com.opensymphony.xwork2.validator.ValidationException;

import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class ValidacaoCnpj extends FieldValidatorSupport{  

         public void validate(Object object) throws ValidationException {

                  String fieldName = getFieldName();

                  Object value = this.getFieldValue(fieldName, object);

                  System.out.println("  cnpj  "+value);

             if (value!=null){

          String cnpj= value.toString();

            if(!validaCgc(cnpj)){

                     addFieldError(getFieldName(),object);

            }

         }

         }

         // o metodo abaixo foi retirado do site http://www.mail-archive.com/java-list@soujava.org.br/msg23591.html

 

         public static boolean validaCgc(String xCGC)

         {

                  try

                  {

                            //Testa se o CGC é válido ou não

                            int d1,d4,xx,nCount,fator,resto,digito1,digito2;

                           String Check, s_aux;

                           String Separadores = "/-.";

                           d1 = 0;

                           d4 = 0;

                           xx = 0;

                           for (nCount = 0; nCount < xCGC.length()-2; nCount++)

                           {

                                    s_aux = xCGC.substring (nCount, nCount+1);

                                     if (Separadores.indexOf(s_aux) == -1)

                                     {

                          if (xx < 4)

                          {

                                       fator = 5 - xx;

                              }

                           else

                           {

                                       fator = 13 - xx;

                              }

                 

                           d1 = d1 + Integer.valueOf (s_aux).intValue() * fator;

                           if (xx < 5)

                           {

                                       fator = 6 - xx;

                              }

                           else

                           {

                                       fator = 14 - xx;

                              }

                           d4 += Integer.valueOf (s_aux).intValue() * fator;

                           xx++;

                           };

                           }

                           resto = (d1 % 11);

                           if (resto < 2)

                           {

                           digito1 = 0;

                      }

                           else

                           {

                           digito1 = 11 - resto;

                      }

 

                           d4 = d4 + 2 * digito1;

                           resto = (d4 % 11);

                           if (resto < 2)

                           {

                           digito2 = 0;

                      }

                           else

                           {

                           digito2 = 11 - resto;

                      }

 

                           Check = String.valueOf(digito1) + String.valueOf(digito2);

                           //System.out.println (Check);

                           //System.out.println (xCGC.substring(xCGC.length()-2, xCGC.length() ));

                 

                           if (Check.compareTo(xCGC.substring(xCGC.length()-2, xCGC.length() )) !=0)

                           {

                           return false;

                      }

 

                           return true;

                    }

                  catch (Exception e)

                  {

                            return false;            

         }

         }

}       

 

 Bom espero que ajude, pude perceber que ainda não se encontra muito material sobre este caso, por isso escrevi esse artigo, espero ajudar e não atrapalhar, pois estou começando agora.

Um abraço a todos