对于最新稳定版本,请使用Spring Framework 7.0.1spring-doc.cadn.net.cn

@SessionAttributes

@SessionAttributes用于在 HTTP Servlet 会话中存储模型属性 请求。它是一个类型级注释,声明了 a 所使用的会话属性 特定的控制器。这通常列出模型属性或类型名称 模型属性应透明存储在会话中以便后续使用 访问请求。spring-doc.cadn.net.cn

以下示例使用了@SessionAttributes注解:spring-doc.cadn.net.cn

@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
	// ...
}
1 使用@SessionAttributes注解。
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
	// ...
}
1 使用@SessionAttributes注解。

在第一次请求中,当一个带有名称的 model 属性时,宠物,被添加到模型中, 它会自动升级到并保存在HTTP Servlet会话中。它依然存在 直到另一种控制器方法使用会话状态方法参数以清除 存储,如下示例所示:spring-doc.cadn.net.cn

@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 存储宠物在 Servlet 会话中值。
2 正在清理宠物Servlet 会话中的值。
@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 存储宠物在 Servlet 会话中值。
2 正在清理宠物Servlet 会话中的值。