2012-02-15 6 views
0
// 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> 
... 
... 

スプリングレンダリング後jspはこのコードを生成します。Springフレームワークのバインドフォームの配列プロパティ

<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"/> 
... 
... 

フォーム名が無効(myField0、myField1 ..)なので、Spring cantがコントローラのフォームにバインドします。私がfirebug(myField [0]、myField [1]など)で名前を変更した場合、initBinderが動作し、コントローラ上のフォームデータを取得します。どうすればこの問題を解決できますか?

ありがとうございました。

答えて

1

は、配列の代わりにあなたの形式でコレクションを使用します。

public class myForm { 
    private Collection<Double> myField; 

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

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

はなぜコレクションを使うのか?なぜ彼はアレイを使用できないのですか?また、コレクションは許可されていますか? – Marco

関連する問題