@SessionAttributes
@SessionAttributes
は、リクエスト間で WebSession
にモデル属性を保存するために使用されます。これは、特定のコントローラーが使用するセッション属性を宣言する型レベルのアノテーションです。これは通常、後続のアクセスリクエストのためにセッションに透過的に保存されるモデル属性の名前またはモデル属性の型をリストします。
次の例を考えてみましょう。
Java
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
}
1 | @SessionAttributes アノテーションを使用します。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
}
1 | @SessionAttributes アノテーションを使用します。 |
最初のリクエストで、名前が pet
のモデル属性がモデルに追加されると、自動的に WebSession
に昇格して保存されます。次の例に示すように、別のコントローラーメソッドが SessionStatus
メソッド引数を使用してストレージをクリアするまで、そこに残ります。
Java
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
@PostMapping("/pets/{id}")
public String handle(Pet pet, BindingResult errors, SessionStatus status) { (2)
if (errors.hasErrors()) {
// ...
}
status.setComplete();
// ...
}
}
}
1 | @SessionAttributes アノテーションを使用します。 |
2 | SessionStatus 変数を使用します。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
@PostMapping("/pets/{id}")
fun handle(pet: Pet, errors: BindingResult, status: SessionStatus): String { (2)
if (errors.hasErrors()) {
// ...
}
status.setComplete()
// ...
}
}
1 | @SessionAttributes アノテーションを使用します。 |
2 | SessionStatus 変数を使用します。 |