@SessionAttributes
@SessionAttributes
用於在請求之間將模型屬性儲存在 HTTP Servlet session 中。它是一種型別層級的註解,用於宣告特定控制器使用的 session 屬性。這通常列出模型屬性的名稱或模型屬性的類型,這些屬性應透明地儲存在 session 中,以供後續請求存取。
以下範例使用 @SessionAttributes
註解
-
Java
-
Kotlin
@Controller
@SessionAttributes("pet") (1)
public class EditPetForm {
// ...
}
1 | 使用 @SessionAttributes 註解。 |
@Controller
@SessionAttributes("pet") (1)
class EditPetForm {
// ...
}
1 | 使用 @SessionAttributes 註解。 |
在第一個請求中,當名稱為 pet
的模型屬性新增至模型時,它會自動提升並儲存在 HTTP Servlet session 中。它會保留在那裡,直到另一個控制器方法使用 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 session 中。 |
2 | 從 Servlet session 中清除 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 session 中。 |
2 | 從 Servlet session 中清除 Pet 值。 |