此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
重定向属性(Redirect Attributes)
默认情况下,所有模型属性都被视为在重定向 URL 中公开为 URI 模板变量。在其余属性中,那些是原始类型或原始类型的集合或数组会自动附加为查询参数。
如果model 实例是专门为重定向准备的。但是,在带注释的控制器中,模型可以包含为渲染目的添加的其他属性(例如下拉字段值)。为了避免此类属性出现在URL 中,一个@RequestMapping
方法可以声明类型为RedirectAttributes
和 使用它来指定要提供给的确切属性RedirectView
. 如果方法确实重定向,则RedirectAttributes
。否则,使用模型的内容。
这RequestMappingHandlerAdapter
提供了一个名为ignoreDefaultModelOnRedirect
,您可以使用它来指示默认Model
如果控制器方法重定向,则切勿使用。相反,控制器方法应声明类型为RedirectAttributes
或者,如果它不这样做,不应将任何属性传递给RedirectView
. MVC 命名空间和 MVCJava 配置将此标志设置为false
,以保持向后兼容性。但是,对于新应用程序,我们建议将其设置为true
.
请注意,当前请求中的 URI 模板变量会自动使在展开重定向 URL 时可用,并且您无需显式添加它们 通过Model
或RedirectAttributes
. 以下示例演示如何定义重定向:
-
Java
-
Kotlin
@PostMapping("/files/{path}")
public String upload(...) {
// ...
return "redirect:files/{path}";
}
@PostMapping("/files/{path}")
fun upload(...): String {
// ...
return "redirect:files/{path}"
}
将数据传递到重定向目标的另一种方法是使用 flash 属性。与其他redirect 属性不同,flash 属性保存在 HTTP 会话中(因此不会出现在 URL 中)。有关更多信息,请参阅 Flash 属性。