@SessionAttributes
는 요청 간 HTTP 서블릿 세션에 모델 속성을 저장하는 데 사용됩니다. 특정 컨트롤러에서 사용하는 세션 속성을 선언하는 유형 수준 주석입니다. 여기에는 일반적으로 후속 요청에 대한 액세스를 위해 세션에 투명하게 저장되어야 하는 모델 속성의 이름 또는 모델 속성 유형이 나열됩니다.
다음 예에서는 @SessionAttributes
annotation을 사용합니다.
@Controller
@SessionAttributes("pet") // (1)
public class EditPetForm {
// ...
}
(1) @SessionAttributes
annotation을 사용합니다.
첫 번째 요청에서 이름이 pet
인 모델 속성이 모델에 추가되면 자동으로 HTTP 서블릿 세션으로 승격되어 저장됩니다. 다음 예제와 같이 다른 컨트롤러 메서드가 SessionStatus
메서드 인수를 사용하여 저장소를 지울 때까지 그대로 유지됩니다.
@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) 서블릿 세션에 Pet
값을 저장합니다.
(2) 서블릿 세션에서 Pet
값을 지웁니다.