有人可以帮我找出为什么我尝试将 Collection 绑定到 Spring MVC 中的表单不起作用吗?
这是我的对象的样子 -
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 的表单对象。我无法弄清楚为什么这个简单的案例不起作用?
我将非常感谢任何帮助使其正常工作。