弹簧MVC控制器:重定向,而不将参数添加到我的网址

2022-09-01 03:32:48

我正在尝试在不将参数添加到我的URL的情况下进行重定向。

@Controller
...
public class SomeController
{
  ...
  @RequestMapping("save/")
  public String doSave(...)
  {
    ...
    return "redirect:/success/";
  }

  @RequestMapping("success/")
  public String doSuccess(...)
  {
    ...
    return "success";
  }

重定向后,我的网址看起来总是像这样:.由于我希望我的URL是RESTful,并且我永远不需要重定向后的参数,所以我不希望将它们添加到重定向中。.../success/?param1=xxx&param2=xxx

任何想法如何摆脱它们?


答案 1

在Spring 3.1中,控制此行为的一种首选方法是向方法中添加一个RedirectAttributes参数:

@RequestMapping("save/")
public String doSave(..., RedirectAttributes ra)
{
    ...
    return "redirect:/success/";
}

默认情况下,它禁止添加属性,并允许您控制要显式添加的属性。

在以前版本的Spring中,它更复杂。


答案 2

在Spring 3.1中,使用选项overerDefaultModelOnRedirect禁用自动将模型属性添加到重定向:

<mvc:annotation-driven ignoreDefaultModelOnRedirect="true" />

推荐