【问题标题】:Why isn't Spring Web/MVC adding my model attributes to the URL of my redirect view?为什么 Spring Web/MVC 不将我的模型属性添加到我的重定向视图的 URL?
【发布时间】:2011-10-22 01:15:24
【问题描述】:

在 POST 之后重定向到 GET。 Spring Web 应该将下面的“clientId”模型属性添加到我的 URL 中,但它不是......

@Override
protected ModelAndView onSubmit(Object command, BindException errors) throws Exception {
    ClientID clientId = ((MyCommand) command).getClientId();
    return new ModelAndView(new RedirectView(getSuccessView()), "clientId", clientId);
}

如果我只是将 getSuccessView() 传递给 ModelAndView 并将 redirect:<success_view_url> 作为我的配置中的成功视图,则会出现同样的问题。

【问题讨论】:

    标签: java url redirect spring-mvc model


    【解决方案1】:

    问题在于,默认情况下,RedirectView 仅将其所谓的“简单值类型”转换为 URL。参考文献RedirectView.isEligibleValue().

    解决方案是将ClientId作为String而不是更自定义的类型添加到模型中:

    @Override
    protected ModelAndView onSubmit(Object command, BindException errors) throws Exception {
        ClientID clientId = ((MyCommand) command).getClientId();
        return new ModelAndView(new RedirectView(getSuccessView()), "clientId", clientId.toString());
    }
    

    注意最后一行的.toString()

    您可以覆盖isEligibleValue()(在您自己的RedirectView 子类上),这是您真正想要的,但更容易将您放入其中的所有内容都字符串化。

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 2012-08-06
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多