Spring框架绑定表单数组属性

时间:2012-02-15 15:37:44

标签: spring webforms bind

// my form
public class myForm {
private double[] myField;

public double[] getMyField(){
    return myField;
}

public void setMyField(double[] myField){
    this.myField = myField;
}
}

// my jsp
...
...
<c:set var="i" value="0"/>
<c:forEach items="${myList}" var="data">
<form:input path="myField[${$i}]"/>
<c:set var="i">${i + 1}</c:set>
</c:forEach>
...
...

在spring渲染后,jsp生成此代码;

<input type="text" value="0.0" name="myField0" id="myField0"/>
<input type="text" value="0.0" name="myField1" id="myField1"/>
<input type="text" value="0.0" name="myField2" id="myField2"/>
...
...

Spring无法在控制器上绑定我的表单,因为表单名称无效(myField0,myField1 ..)。如果我用firebug更改名称(如myField [0],myField [1]等)initBinder工作,我在控制器上捕获我的表单数据。我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

在表单中使用Collection而不是数组:

public class myForm {
    private Collection<Double> myField;

    public Collection<Double> getMyField(){
        return myField;
    }

    public void setMyField(Collection<Double> myField){
        this.myField = myField;
    }
}