@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)
// ...
}
}
1 | Servlet セッションに 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)
// ...
}
}
1 | Servlet セッションに Pet 値を保存します。 |
2 | サーブレットセッションから Pet 値をクリアします。 |