@SessionAttributes
@SessionAttributes
[请参阅Reactive栈中的等效内容](../../../webflux/controller/ann-methods sessionattributes.md)
@SessionAttributes 用于在请求之间将模型属性存储在 HTTP Servlet 会话中。它是一种类型级别的注解,用于声明特定控制器所使用的会话属性。该注解通常会列出应被透明地存储在会话中的模型属性名称或模型属性类型,以便后续请求能够访问这些属性。
以下示例使用了@SessionAttributes注释:
- Java
- Kotlin
@Controller
@SessionAttributes("pet") 1
public class EditPetForm {
// ...
}
使用
@SessionAttributes注解。
@Controller
@SessionAttributes("pet") 1
class EditPetForm {
// ...
}
使用
@SessionAttributes注解。
在首次请求时,当一个名为pet的模型属性被添加到模型中时,它会自动被提升并保存在HTTPServlet会话中。它会一直保留在那里,直到另一个控制器方法使用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对象的值。