@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 アノテーションを使用します。
2SessionStatus 変数を使用します。
@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 アノテーションを使用します。
2SessionStatus 変数を使用します。