Formatar Double no validator

Pessoal,

 Tenho um campo que o padrão dele eh dinherio (R$) 

Ex. 1.000,00.
Meu validator está assim + não formata corretamente.

<field property=“exchangeInvoiceAmount” depends=“double,maxlength”>
<arg0 key=“Valor da Fatura (R$)” resource=“false”/>
<var><var-name>pattern</var-name><var-value>###,##0.00</var-value></var>
<var><var-name>decSep</var-name><var-value>,</var-value></var>
<var><var-name>grpSep</var-name><var-value>.</var-value></var>
<msg name=“double” key=“errors.invalid”/>
<var><var-name>maxlength</var-name><var-value>18</var-value></var>
<arg1 key=“18” resource=“false”/>
<msg name=“maxlength” key=""/>
</field>

Mas esse código não está funcionando, se o usuario digitar letra, ele deixa passar.

Como faço para validar esse campo como se ele fosse um Double???

Att.

Não sei se te ajudaria fazer essa validação no código…
Como eu trabalho com Struts executo esse metodo no FORM, mas vc poderia adaptar onde achasse melhor:

[code]public boolean validaMoeda(String valor) { //valida até 999.999,99
boolean validar = true;
int len = valor.length(); // retorna qtde caracters
int ponto = valor.indexOf(’.’); // retorna 1 se existir ponto e -1 se não existir

  if &#40;ponto != -1&#41;&#123; //se existir ponto 
      System.out.println&#40;&quot;não use . &quot;&#41;;         
  validar = false;   //termina o metodo       
  &#125;
  else&#123; // se não existir ponto verificaremos a virgula
      int virgula = valor.indexOf&#40;','&#41;; // retorna 1 se existir -1 se não existir      
      if &#40;virgula != -1&#41;&#123; //se existir...
          System.out.println&#40;&quot;virgula digitada&quot;&#41;;
          if &#40;len&gt;9&#41;&#123; //verificamos qtde de caracters digitados
              System.out.println&#40;&quot;valor invalido &gt; 999999,99&quot;&#41;;		
                    validar = false; // e se for maior q 9 &#40;pq inclui a virula&#41; termina o metodo
          &#125;
          else&#123; //se não se qtde caracters for valida
              try &#123;
                  int posVirg = &#40;len - 3&#41;; //retorna posição da virgula
                  char virg = valor.charAt&#40;posVirg&#41;; // retorna o caracter posicionado na virgula
                  if &#40;virg != ','&#41; &#123; // se esse caracter não for uma virgula
                      System.out.println&#40;&quot;virgula não esta posicionada na casa decimal correta&quot;&#41;;
                      validar = false; //termina o metodo
                  &#125;
                  else&#123; //senão se  esse caracter for de fato uma virgula
                      String antes = valor.substring&#40;0,valor.indexOf&#40;','&#41;&#41;; //recebe conteudo antes virgula        
                  String depois = valor.substring&#40;valor.indexOf&#40;&quot;,&quot;&#41;+1&#41;; //recebe conteudo após virgula
                      Integer.parseInt&#40;antes&#41;; // valida pra ver se é um numero
	          Integer.parseInt&#40;depois&#41;;
                  &#125;
              &#125;
              catch &#40;Exception e&#41; &#123; //caso não for numerico, ocorrera um erro e esse catch trata o valor não numerico
                  validar = false;
              &#125;
               finally&#123;
                   return validar; // retornando o status false do boolean
               &#125;
              
          &#125;
          
      &#125;
      else&#123; // sem virgulas
          if &#40;len&gt;6&#41;&#123; // sem virgulas só é possivel uma entrada menor do valor
              System.out.println&#40;&quot;valor invalido &gt; 999999&quot;&#41;;
              validar = false;
          &#125;
          else&#123;
              try &#123;
                  Integer.parseInt&#40;valor&#41;; //sem virgula basta uma conferencia pra ver se o valor é inteiro
              &#125;
              catch &#40;Exception e&#41; &#123; //caso não for numerico, ocorrera um erro e esse catch trata o valor não numerico
                  validar = false;
              &#125;
              finally&#123;
                  return validar; // retornando o status booleano 
              &#125;
          &#125;
      &#125;          
  &#125;
  return validar;     //se não entrou em nenhum catch temos que exibir a saída dos ifs true ou false

} [/code]

Ai vc faz executa o metodo se retornar false não é valido!

[code] if (!validaMoeda(sValor)){

        errors.add&#40;&quot;conteudoPesquisa&quot;,new ActionError&#40;&quot;error.valor.numeric&quot;&#41;&#41;;

}[/code]