@SessionAttributes
@SessionAttributes
用于在请求之间在WebSession
中存储模型属性。这是一种类型级别的注解,声明了特定控制器使用的会话属性。通常列出应在会话中透明存储以便后续请求访问的模型属性的名称或类型。
考虑以下示例:
-
Java
-
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
}
1 | 使用@SessionAttributes 注解。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
}
1 | 使用@SessionAttributes 注解。 |
在第一个请求时,当一个名为pet
的模型属性被添加到模型中时,它会自动提升并保存在WebSession
中。它会一直保留在那里,直到另一个控制器方法使用SessionStatus
方法参数来清除存储,如下例所示:
-
Java
-
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
@PostMapping("/pets/{id}")
public String handle(Pet pet, BindingResult errors, SessionStatus status) { (2)
if (errors.hasErrors()) {
// ...
}
status.setComplete();
// ...
}
}
}
1 | 使用@SessionAttributes 注解。 |
2 | 使用SessionStatus 变量。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
@PostMapping("/pets/{id}")
fun handle(pet: Pet, errors: BindingResult, status: SessionStatus): String { (2)
if (errors.hasErrors()) {
// ...
}
status.setComplete()
// ...
}
}
1 | 使用@SessionAttributes 注解。 |
2 | 使用SessionStatus 变量。 |