此版本仍在开发中,尚未稳定。如需最新的稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

重定向属性

默认情况下,所有模型属性都被视为会在重定向URL中作为URI模板变量暴露。在剩余的属性中,那些原始类型或原始类型集合或数组的属性会自动作为查询参数附加。spring-doc.cadn.net.cn

将原始类型属性作为查询参数附加可能是期望的结果,如果模型实例是专门为重定向准备的。但是,在注解控制器中,模型可能包含为渲染目的添加的其他属性(例如,下拉字段值)。为了避免这些属性出现在URL中,可以声明一个类型为@RequestMapping的方法参数,并使用它来指定要提供给RedirectView的确切属性。如果方法确实重定向,则使用RedirectAttributes的内容。否则,使用模型的内容。spring-doc.cadn.net.cn

The RequestMappingHandlerAdapter 提供了一个名为 ignoreDefaultModelOnRedirect 的标志,你可以使用它来指示默认情况下 Model 的内容如果被控制器方法重定向则永远不应使用。相反,控制器 方法应声明一个类型为 RedirectAttributes 的属性,或者如果不这样做, 则不应将任何属性传递给 RedirectView。MVC 命名空间和 MVC Java 配置都保持此标志设置为 false,以保持向后兼容性。 但是,对于新应用程序,我们建议将其设置为 truespring-doc.cadn.net.cn

请注意,来自当前请求的URI模板变量在扩展重定向URL时会自动可用,您不需要显式地通过ModelRedirectAttributes添加它们。以下示例展示了如何定义重定向:spring-doc.cadn.net.cn

@PostMapping("/files/{path}")
public String upload(...) {
	// ...
	return "redirect:files/{path}";
}
@PostMapping("/files/{path}")
fun upload(...): String {
	// ...
	return "redirect:files/{path}"
}

另一种传递数据到重定向目标的方法是使用闪存属性。与其它重定向属性不同,闪存属性保存在HTTP会话中(因此不会出现在URL中)。有关更多信息,请参见闪存属性spring-doc.cadn.net.cn