【问题标题】:Spring automatic adds model param to urlSpring自动将模型参数添加到url
【发布时间】:2014-10-03 08:01:28
【问题描述】:

当我在方法中使用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 与 启用矩阵变量和忽略默认模型重定向 分别。

但是当我将它添加到我的 mvc-dispatcher.xml 时,我的 IDE 说这里不允许使用该属性。

Spring 3.2 的任何解决方案?

【问题讨论】:

  • 你的问题是什么?
  • 您到底尝试了什么?看来ignore-default-model-on-redirect 实际上是你应该使用的。
  • 在Spring 3.2中,实际上似乎应该使用ignoreDefaultModelOnRedirect。
  • Hugo G. 当我尝试部署应用程序 org.xml.sax.SAXParseException 时得到了什么;行号:71;列号:65; cvc-complex-type.3.2.2:属性“ignoreDefaultModelOnRedirect”不允许出现在元素“mvc:annotation-driven”中。

标签: java spring


【解决方案1】:

如果您使用 java 配置,请将以下内容添加到您的 WebMvcConfigurerAdapter 子类:

@Autowired
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;

@PostConstruct
public void init() {
    requestMappingHandlerAdapter.setIgnoreDefaultModelOnRedirect(true);
}

【讨论】:

    【解决方案2】:

    你可以在重定向之前清除你的模型:

    @RequestMapping(...)
    public String doSomething(Model model, ...)
    {
        // ....
        model.asMap().clear();
        return "redirect:list";
    }
    

    您可以在此处查看其他解决方案:

    Spring 3.0 MVC :Redirect without parameters being added to my url

    【讨论】:

    • 抱歉,我了解到您不想将模型属性传递给重定向 URL。您能否更具体地说明您尝试了什么、获得了什么以及想要什么?
    【解决方案3】:

    这对我有用。如果您希望将模型数据附加到 url 参数,请使用此选项。

    @RequestMapping("save/")
    public View doSave(...)
    {
        ...
        RedirectView redirect = new RedirectView("/success");
        redirect.setExposeModelAttributes(false);
        return redirect;
    }
    

    感谢reallynic's comment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 2021-09-28
      • 2015-04-24
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多