我是springMVC的新手,遇到了这个我不明白的问题。我有一个带有表单的 JSP,其中一些字段在我的 get 方法中预填充了一些从数据库中获取的值。当我通过 POST 方法提交表单并且未填写必填字段时,我调用 GET 方法再次显示表单,并在页面顶部显示错误消息。一切正常,我需要预填充的字段被正确填充。
我们在测试中遇到的问题是,当我们删除预填充的字段并再次提交时,我的 POST 方法调用我的 GET 方法重新显示带有错误消息的页面,并且错误消息在屏幕上显示正常,但我的字段假设是即使我每次都在调用数据库并使用我的 GET 方法中的 model.put() 方法填充我的表单,预填充的某些值也不会再次重新填充。
如果出现错误,似乎 spring 不会填充 JSP 上的任何字段。那正确吗?
这是我的控制器的简化版本,但它会解释我想要做什么:
@RequestMapping(value = myPageURL, method = GET)
public String displayPage(@ModelAttribute("someForm") SomeForm someForm,
BindingResult bindingResult,
ModelMap model) {
//call the database and get some values
someform.setSomefield1("someValue1");
someform.setSomefield2("someValue2");
model.put("someform", someForm)
return VIEW;
}
@RequestMapping(value = myPageURL, method = POST)
public String submitform(@ModelAttribute("someForm") SomeForm someForm,
BindingResult bindingResult,
ModelMap model) {
validate(someForm, bindingResult);
if (!bindingResult.hasErrors()) {
//Display some page
}
return displayPage(someForm, bindingResult, model);
}
这是 JSP 的一部分:
<form:form action=myPageURL method="POST" modelAttribute="someForm">
<form:hidden path="cid"/>
<td>
<form:input path="someField1" size="10" maxlength="20" cssErrorClass="fieldError
error-text-first-name-label"/>
</td>
<td>
<form:input path="someField2" size="10" maxlength="20" cssErrorClass="fieldError
error-text-last-name-label"/>
</td>
<td>
<form:input path="someField3" size="10" maxlength="20" cssErrorClass="fieldError
error-text-last-name-label"/>
</td>
</form:form>
谢谢