web-dev-qa-db-ja.com

Spring MVCのinitバインダーの目的は何ですか

これはinitバインダーのインターネット上のコードです

@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

誰でも説明してください:

1)なぜ使用されているのか、つまり、以前は何が問題だったのか、その機能でどのように解決されたのか。この日付形式で解決された元の日付の問題は何ですか?

2)JSP形式の観点からこの形式を使用する方法、つまり、テキスト形式で日付を入力すると、特定の形式に変換されて保存されますか?

3)そのフォーマットをどのように適用しますか、つまり、オブジェクトクラスで何かをする必要がありますか?

61
John

1)以前は、手動で日付を解析する必要がありました。

 public void webmethod(@RequestParam("date") String strDate) {
    Date date = ... // manually parse the date
 }

これで、解析された日付を直接取得できます。

 public void webmethod(@RequestParam("date") Date date) {
 }

2)jspページがyyyy-MM-ddの形式で日付を提供している場合は、Dateオブジェクトとしてコントローラーで直接取得できます。

3)Springは、すべての登録済みエディターに対して、値をオブジェクトに変換できるかどうかを確認しようとします。オブジェクト自体で何もする必要はありません。それが美しさです。

57
Johan Sjöberg