2

我是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>

谢谢

4

0 回答 0