2

私はspringMVCが初めてで、理解できないこの問題に遭遇しました。データベースから取得したいくつかの値を使用して、いくつかのフィールドが get メソッドで事前に入力されるフォームを持つ JSP があります。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