From bd3884c617e1a8528cd5f4a72924417efd221b1f Mon Sep 17 00:00:00 2001 From: wu xiangkai Date: Wed, 30 Nov 2022 16:50:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring/Spring core/SpringMVC.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spring/Spring core/SpringMVC.md b/spring/Spring core/SpringMVC.md index e311c37..a1897ed 100644 --- a/spring/Spring core/SpringMVC.md +++ b/spring/Spring core/SpringMVC.md @@ -325,6 +325,39 @@ public String update(@Valid AccountForm form, BindingResult result, // ... } ``` +#### @SessionAttributes +@SessionAttributes注解用于将model attribute存储在http session中,从而在不同的请求间都可以访问该attribute。 +@SessionAttributes为class-level的注解,注解的value应该列出model attribute name或model attribute的类型。 +该注解使用如下所示: +```java +@Controller +@SessionAttributes("pet") +public class EditPetForm { + + // ... + + @PostMapping("/pets/{id}") + public String handle(Pet pet, BindingResult errors, SessionStatus status) { + if (errors.hasErrors) { + // ... + } + status.setComplete(); + // ... + } +} +``` +当第一个请求到来时,name为pet的Model Attribute被添加到model中,其会被自动提升并保存到http session中,知道另一个controller method通过SessionStatus方法来清除存储。 +#### @SessionAttribute +如果想要访问已经存在的Session Attribute,可以在handler method的参数上添加@SessionAttribute,如下所示: +```java +@RequestMapping("/") +public String handle(@SessionAttribute User user) { + // ... +} +``` +#### Multipart +在MultipartResolver被启用之后, +