Может кто-то, пожалуйста, помогите мне узнать, почему моя попытка связать коллекцию с формой Spring MVC не работает?Bind Collection to Form - почему он не работает?
Вот как мой объект выглядит -
public class TestObj {
private Integer testNumber;
private String home;
private String destination;
}
Вот моя форма объект, который содержит список выше объекта -
public class TestForm {
private List<TestObj> testList;
//contains getter and setter for testList
}
В моем контроллере, я реализовал метод formBackingObject -
public class MyController extends SimpleFormController {
public MyController() {
setCommandClass(TestForm.class);
setCommandName("testForm");
}
protected Object formBackingObject(HttpServletRequest request) throws Exception {
if (isFormSubmission(request)) {
testForm = (TestForm) super.formBackingObject(request);
//THIS ALWAYS RETURNS NULL ON FORM SUBMISSION
List<TestObj> testList = testForm.getTestList();
} else {
//load initial data using hibernate. TestObj is hibernate domain object.
List<TestObj> testList = myService.findTestList();
testForm = new TestForm(testList);
}
return testForm;
}
Вот мой фрагмент JSP -
<form:form commandName="testForm" method="post">
<c:forEach items="${testForm.testList}" var="testvar" varStatus="testRow">
<tr>
<td>
<form:hidden path="testList[${testRow.index}].home" />
<c:out value="${testvar.home}" />
</td>
<td>
<form:input path="testList[${testRow.index}].destination" />
</td>
</tr>
</c:forEach>
<tr><td><input type="submit"></td></tr>
</form:form>
В то время как первый раз, когда я загружаю данные, отображается штраф в форме, когда я нажимаю кнопку отправки, элемент управления переходит к методу formBackingObject, а isFormSubmission возвращает true. Однако, когда я получаю объект команды, используя super.formBackingObject (request), он возвращает объект формы с значением testList как null. Я не могу понять, почему этот простой случай не работает?
Я по-настоящему признателен за любую помощь в ее работе.
Благодарим за ответ. Я просто взял приложение, которое использует Spring 2.0, поэтому еще не в состоянии использовать любую из функций Spring 3.0+. Я также просмотрел вторую ссылку, которую вы разместили в отношении привязки, и нашел использование AutoPopulatingList из другой ссылки, упомянутой там. Тем не менее, это все равно не помогает, так как я получаю список со всеми нулями. – JUG
Мой опыт - исключительно с весны 3. Я немного поработаю, чтобы посмотреть, смогу ли я помочь дальше, но, надеюсь, кто-то еще ответит за вас ради вас! :) – skel625