@SessionAttributes

@SessionAttributes は、リクエスト間の HTTP サーブレットセッションにモデル属性を格納するために使用されます。これは、特定のコントローラーが使用するセッション属性を宣言する型レベルのアノテーションです。これは通常、後続のアクセスリクエストのためにセッションに透過的に保存されるモデル属性の名前またはモデル属性の型をリストします。

次の例では、@SessionAttributes アノテーションを使用しています。

  • Java

  • Kotlin

@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
	// ...
}
1@SessionAttributes アノテーションを使用します。
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
	// ...
}
1@SessionAttributes アノテーションを使用します。

最初のリクエストで、名前が pet のモデル属性がモデルに追加されると、自動的に HTTP サーブレットセッションにプロモートされ、保存されます。次の例に示すように、別のコントローラーメソッドが SessionStatus メソッド引数を使用してストレージをクリアするまで、そこに残ります。

  • Java

  • Kotlin

@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {

	// ...

	@PostMapping("/pets/{id}")
	public String handle(Pet pet, BindingResult errors, SessionStatus status) {
		if (errors.hasErrors) {
			// ...
		}
		status.setComplete(); (2)
		// ...
	}
}
1Servlet セッションに Pet 値を保存します。
2 サーブレットセッションから Pet 値をクリアします。
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {

	// ...

	@PostMapping("/pets/{id}")
	fun handle(pet: Pet, errors: BindingResult, status: SessionStatus): String {
		if (errors.hasErrors()) {
			// ...
		}
		status.setComplete() (2)
		// ...
	}
}
1Servlet セッションに Pet 値を保存します。
2 サーブレットセッションから Pet 値をクリアします。