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:
<input type="text" name="moeda[0]_masked"><input type="hidden" name="moeda[0]"><br>
<input type="text" name="moeda[1]_masked"><input type="hidden" name="moeda[1]">
Tenho um form bean assim:
[code]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];
}
}[/code]
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!