@SessionAttributes
@SessionAttributes
@SessionAttributes
用于在 HTTP Servlet 会话中存储模型属性,以便在请求之间保持这些属性的状态。这是一个类级别的注解,用于声明特定控制器所使用的会话属性。它通常列出模型属性的名称或类型,这些属性应透明地存储在会话中,以便后续请求可以访问。
以下示例使用了 @SessionAttributes
注解:
- Java
- Kotlin
@Controller
@SessionAttributes("pet") 1
public class EditPetForm {
// ...
}
使用
@SessionAttributes
注解。
@Controller
@SessionAttributes("pet") 1
class EditPetForm {
// ...
}
使用
@SessionAttributes
注解。
在第一次请求时,当向模型中添加一个名为 pet
的属性时,它会自动提升并保存到 HTTP Servlet 会话中。它会一直保留在那里,直到另一个控制器方法使用 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
// ...
}
}
将
Pet
值存储在 Servlet 会话中。从 Servlet 会话中清除
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
// ...
}
}
将
Pet
值存储在 Servlet 会话中。从 Servlet 会话中清除
Pet
值。