对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
@SessionAttributes
@SessionAttributes
用于将模型属性存储在WebSession
之间
请求。它是一个类型级注释,用于声明
特定控制器。这通常列出模型属性的名称或
model 属性,这些属性应该透明地存储在会话中以供后续使用
请求访问。
请考虑以下示例:
-
Java
-
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
}
1 | 使用@SessionAttributes 注解。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
}
1 | 使用@SessionAttributes 注解。 |
在第一个请求中,当名称为pet
添加到模型中,
它会自动提升并保存在WebSession
.它一直留在那里,直到
另一个控制器方法使用SessionStatus
method 参数来清除存储空间,
如下例所示:
-
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 变量。 |