Problema com BeanUtils e array

0 respostas
danieldestro

Galera,

Estou tendo um problema com Apache Commons BeanUtils quando ele atribui um valor para um atributo que é um array de Double.

Descobri este problema debugando o Struts.

Acontece que tenho o seguinte form html, gerado dinamicamente:

&lt;input type="text" name="moeda[0]_masked"&gt;&lt;input type="hidden" name="moeda[0]"&gt;<br>
&lt;input type="text" name="moeda[1]_masked"&gt;&lt;input type="hidden" name="moeda[1]"&gt;

Tenho um form bean assim:

public class MeuForm ... {
  private Double[] moeda = new Double[2];

  public void setMoeda(int i, Double val) {
    this.moeda[i] = val;
  }

  public Double getMoeda(int i) {
    return this.moeda[i];
  }
}

Quando o Struts chama o BeanUtil para popular o array do meu form, ele sobrescreve os valores, justamente por causa dos nomes dos campos de entrada:

moeda[0]_masked e moeda[0]
moeda[1]_masked e moeda[1]

Ou seja, para o "BeanUtils.populate()", ambos os nomes correspondem ao mesmo atributo do objeto.

Solução: terei de renomear meu campo "masked", retirando os colchetes, por exemplo.

Porque uso esse "masked"??? Pois o Struts 1.x não possui um formatter, então uso uma tag que gera campos com formatação e mascaramento, enviando ao servidor o valor sem máscara

Acabei descobrindo sem querer. Fica registrada a dica!

Criado 15 de outubro de 2008
Respostas 0
Participantes 1