@SessionAttributes 是用来在请求之间的 HTTP Servlet 会话中存储模型属性。它是一个类级别的注解,声明了特定控制器所使用的会话属性。这通常列出了模型属性的名称或模型属性的类型,它们应该被透明地存储在会话中,供后续请求访问。
下面的例子使用了 @SessionAttributes 注解:
@Controller@SessionAttributes("pet")public class EditPetForm {// ...}
在第一个请求中,当一个名称为 pet 的模型属性被添加到模型中时,它被自动提升并保存在 HTTP Servlet 会话中。它一直在那里,直到另一个控制器方法使用 SessionStatus 方法参数来清除存储,如下面的例子所示:
@Controller@SessionAttributes("pet") // 在 session 中存储 petpublic class EditPetForm {// ...@PostMapping("/pets/{id}")public String handle(Pet pet, BindingResult errors, SessionStatus status) {if (errors.hasErrors) {// ...}status.setComplete(); // 清除 session 中的 pet 值// ...}}
