フォームオブジェクトクラスのフィールドに入力チェックで必要となるアノテーションを付加する。getters}フォームオブジェクト引数に@Validatedアノテーションを付与する。@Validatedアノテーションを付けた引数は、ハンドラメソッド実行前に入力チェックが行われ、チェック結果が直後のBindingResult引数に格納される。BindingResultに格納されている。説明(1)SampleFormオブジェクトに@Validatedアノテーションを付与し、入力チェック対象のオブジェクトにする。(2)入力チェック結果が格納されるBindingResultを引数に指定する。(3)入力チェックエラーが存在するか判定する。RedirectAttributesオブジェクトに渡したいデータを追加する。説明(1)RedirectAttributesオブジェクトを引数として受け取る。(2)RedirectAttributesオブジェクトのaddFlashAttributeメソッドを呼び出し、渡したいデータをRedirectAttributesオブジェクトに追加する。いう文字列のデータを追加している。(3)addFlashAttributeメソッドの第一引数を省略すると値に渡したオブジェクトのクラス名の先頭を小文字にした文字列が属性名になる。行ったのと同じ結果となる。(4)画面(View)を直接表示せず、次の画面を表示するためのリクエストにリダイレクトする。(5)リダイレクト後のハンドラメソッドでは、(2)(3)で追加したデータを表示する画面のView名を返却する。(6)View(JSP)側では、「${属性名}」と記述することでRedirectAttributesオブジェクトに追加したデータを取得することができる。例ではHTMLエスケープを行うEL式の関数を呼び出しているため、「${f:h(属性名)}」としている。(7)「${属性名.JavaBeanのプロパティ名}」と記述することでRedirectAttributesに格納されているJavaBeanから値を取得することができる。(8)HTMLの出力例。追加してもリダイレクト先にデータを渡すことはできない。NoteModelのaddAttributeメソッドに非常によく似ているが、データの生存期間が異なる。リダイレクト後の1リクエスト(PRGパターンのG)でのみ追加したデータを参照することができる。2回目以降のリクエストの時にはデータは消えている。リダイレクト先へリクエストパラメータを渡す¶リダイレクト先へ動的にリクエストパラメータを設定したい場合は、引数のRedirectAttributesオブジェクトに渡したい値を追加する。説明(1)属性名にリクエストパラメータ名、属性値にリクエストパラメータの値を指定して、RedirectAttributesオブジェクトのaddAttributeメソッドを呼び出す。id;と結果は同じになる。動的に埋め込むリクエストパラメータについては、返り値のリダイレクトURLとして組み立てるのではなく、必ずaddAttributeメソッドを使用してリクエストパラメータに設定すること。動的に埋め込まないリクエストパラメータ(上記例だと”complete”)については、返り値のリダイレクトURLに直接指定してよい。リダイレクト先URLのパスに値を埋め込む¶リダイレクト先URLのパスに動的に値を埋め込みたい場合は、リクエストパラメータの設定と同様引数のRedirectAttributesオブジェクトに埋め込みたい値を追加する。説明(1)属性名とパスに埋め込みたい値を指定して、RedirectAttributesオブジェクトのaddAttributeメソッドを呼び出す。(2)リダイレクトURLの埋め込みたい箇所に「{属性名}」のパス変数を指定する。"?complete";と結果は同じになる。動的に埋め込むパス値については、返り値のリダイレクトURLとして記述せずに、必ずaddAttributeメソッドを使用し、パス変数を使って埋め込むこと。Cookieから値を取得する¶Cookieから取得したい場合は、引数に@CookieValueアノテーションを付与する。説明(1)@CookieValueアノテーションのvalue属性には、Cookie名を指定する。上記例では、Cookieから”JSESSIONID”というCookie名の値が引数sessionIdに渡る。Note@RequestParam同様、required属性、defaultValue属性があり、引数の型にはString型以外の指定も可能である。Cookieに値を書き込む¶Cookieに値を書き込む場合は、HttpServletResponseオブジェクトのaddCookieメソッドを直接呼び出してCookieに追加する。説明(1)Cookieを書き込むために、HttpServletResponseオブジェクトを引数に指定する。(2)Cookieオブジェクトを生成し、HttpServletResponseオブジェクトに追加する。いう値を設定している。Frameworkからorg.springframework.web.util.CookieGeneratorというクラスが提供されている。必要に応じて使用すること。一覧検索を行うリクエストでは、ページネーション情報が必要となる。オブジェクトをハンドラメソッドの引数に取ることで、ページネーション情報(ページ数、取得件数)を容易に扱うことができる。アップロードファイルを取得する¶アップロードされたファイルを取得する方法は大きく2つある。フォームオブジェクトにMultipartFileのプロパティを用意する。@RequestParamアノテーションを付与してorg.springframework.web.multipart.MultipartFileをハンドラメソッドの引数とする。ResultMessagesオブジェクトを追加することで処理の結果メッセージを表示できる。基本的には次に挙げるもののみを使用すること。String(View論理名)以下に、目的別に返り値の使用方法について説明する。HTMLを応答する¶ハンドラメソッドの実行結果をHTMLとして応答する場合、ハンドラメソッドの返り値は、JSPのView名を返却する。TilesViewResolver等)となる。以下では、JSP用のInternalViewResolverを使用する場合の例を記載するが、画面レイアウトがテンプレート化されている場合はTilesViewResolverを使用することを推奨する。説明(1)JSP用のInternalViewResolverを定義する。(2)JSPファイルが格納されているベースディレクトリ(ファイルパスのプレフィックス)を指定する。プレフィックスを指定しておくことで、ControllerでView名を返却する際に、JSPの物理的な格納場所を意識する必要がなくなる。(3)JSPファイルの拡張子(ファイルパスのサフィックス)を指定する。サフィックスを指定しておくことで、ControllerでView名を返却する際に、JSPの拡張子を意識する必要がなくなる。(4)複数のViewResolverを指定した場合の実行順番を指定する。Integerの範囲で指定することが可能で、値が小さいものから順に実行される。4.1から追加された<mvc:jsp>要素に使用して、JSP用のInternalViewResolverを定義する。prefix属性には、JSPファイルが格納されているベースディレクトリ(ファイルパスのプレフィックス)を指定する。suffix属性には、デフォルト値として".jsp"が適用されているため、明示的に指定する必要はない。本ガイドラインでは<mvc:view-resolvers>を使用することを推奨する。呼び出されてHTMLが応答される。