0

私のjspでは、スプリングフォームタグを使用してデータをバインドおよび更新しています。

私のシナリオは、ユーザーがページに入ったときにデフォルト値を表示することです。これらのデフォルト値は、いくつかの条件に応じてデータベースから取得する必要があります。しかし、ユーザーがデータを編集して送信するときは、デフォルト値を更新せずにデータベースに保存したいと思います。

どんな提案でも大歓迎です!

4

2 に答える 2

1

フォームページへの標準的なアプローチは、GET用とPOST用の2つのメソッドを持つコントローラーを使用することです。フォームにバインドするオブジェクトも必要です。

GETを処理するメソッドは、バインドオブジェクトを設定してモデルに配置し、フォームページのビューを返します。ここでのバインドオブジェクトは、どこからでも取得できるデフォルト値で作成できます。バインドオブジェクトには、おそらくIDなどのキーがあります。デフォルトのものはゼロ/デフォルトキーを持つことができます。

POSTを処理するメソッドは、バインドオブジェクトをパラメーターとして受け取ります。おそらく値を検証してからデータベースに挿入します。データベースがキー/IDを生成する可能性があります。

これが例です。

@Controller
public class PersonController {

  @RequestMapping(value="/person.do", method=RequestMethod.GET)
  public ModelAndView setup() {
    ModelAndView response = new ModelAndView("person");

    //Create default bind object, can get values
    //from database if you like. Here they're just
    //hard coded.
    Person person = new Person();
    person.setName("Joe Bloggs");

    response.addObject("person", person);
    return response;
  }

  @RequestMapping(value="/person.do", method=RequestMethod.POST)
  public ModelAndView post(@ModelAttribute("person") Person person,
                           BindingResult result) {
    Validator.validate(person, result);
    if (result.hasErrors()) {
      ModelAndView response = new ModelAndView("person");
      response.addObject("person", person);
      return response;
    } else {
      personDao.store(person);
    }

    return new ModelAndView("redirect:nextPage.do");
  }

}
于 2012-11-09T16:30:11.567 に答える
0

フォームには、バッキングオブジェクトで指定した値が入力されます。あなたの質問の2番目の部分がわかりません。

于 2012-11-09T16:27:19.447 に答える