当我在方法中使用return redirect
时,spring会自动将我的模型变量(例如get params)添加到url中。
我在这里找到了解决方案Spring MVC Controller: Redirect without parameters being added to my url
但不幸的是它不适用于spring 3.2
我也发现了以下
升级到spring-mvc-4.0.xsd时,应该替换 enableMatrixVariables和ignoreDefaultModelOnRedirect with enable-matrix-variables和ignore-default-model-on-redirect 分别
但是当我将其添加到我的mvc-dispatcher.xml时,我的IDE说这里不允许使用该属性。
Spring 3.2的任何解决方案
答案 0 :(得分:3)
如果您使用的是java配置,请在WebMvcConfigurerAdapter
子类中添加以下内容:
@Autowired
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;
@PostConstruct
public void init() {
requestMappingHandlerAdapter.setIgnoreDefaultModelOnRedirect(true);
}
答案 1 :(得分:1)
您可以在重定向之前清除模型:
@RequestMapping(...)
public String doSomething(Model model, ...)
{
// ....
model.asMap().clear();
return "redirect:list";
}
您可以在此处查看其他解决方案:
Spring 3.0 MVC :Redirect without parameters being added to my url
答案 2 :(得分:0)
这对我有用。如果不希望将模型数据附加到url参数,请使用此选项。
@RequestMapping("save/")
public View doSave(...)
{
...
RedirectView redirect = new RedirectView("/success");
redirect.setExposeModelAttributes(false);
return redirect;
}