此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

@SessionAttributes

@SessionAttributes用于在 HTTP Servlet 会话中存储模型属性 请求。它是一个类型级注释,用于声明 特定控制器。这通常列出模型属性的名称或类型的名称 模型属性,这些属性应透明地存储在会话中以供后续使用 访问请求。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注解。

在第一个请求中,当名称为pet,添加到模型中, 它会自动提升到 HTTP Servlet 会话并保存在 HTTP Servlet 会话中。它仍然在那里 直到另一个控制器方法使用SessionStatusmethod 参数来清除 存储,如以下示例所示: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 存储Pet值。
2 清除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值。
2 清除Pet值。