@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值。