Spring связывает свойство массива формы связывания - PullRequest
0 голосов
/ 15 февраля 2012
// 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 сгенерирует этот код;

<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 Ответ

1 голос
/ 15 февраля 2012

Используйте коллекцию в вашей форме вместо массива:

public class myForm {
    private Collection<Double> myField;

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

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