@SessionAttributes
@SessionAttributes
用于在请求之间将模型属性存储在 HTTP Servlet 会话中。它是一个类型级注解,声明特定控制器使用的会话属性。这通常列出应透明地存储在会话中以便后续请求访问的模型属性名称或模型属性类型。
以下示例使用@SessionAttributes
注解
-
Java
-
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
}
1 | 使用@SessionAttributes 注解。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
}
1 | 使用@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)
// ...
}
}
1 | 将Pet 值存储在 Servlet 会话中。 |
2 | 从 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)
// ...
}
}
1 | 将Pet 值存储在 Servlet 会话中。 |
2 | 从 Servlet 会话中清除Pet 值。 |