【问题标题】:Spring redirect: prefix issueSpring重定向:前缀问题
【发布时间】:2011-02-07 10:13:03
【问题描述】:

我有一个使用 Spring 3 的应用程序。我有一个基于字符串构建视图的视图解析器。所以在我的控制器中,我有这样的方法。

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "tiles:tileName"
}

我需要返回一个RedirectView来解决由于在浏览器中更新页面导致的重复提交,所以我想到了使用Spring redirect:前缀。问题是它仅在我使用 URL 更改前缀时才会重定向(不是解析器可以理解的名称)。我想做这样的事情:

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "redirect:tiles:tileName"
}

有什么方法可以将 RedirectView 与我从每个控制器方法获得的字符串(可解析的视图名称)一起使用?

谢谢

【问题讨论】:

    标签: spring spring-mvc resolver


    【解决方案1】:

    redirect:前缀的调用是一个url,在标准浏览器302重定向中发送。您不能重定向到视图,因为视图不是 url。相反,您需要一个新的Servlet映射到“成功”视图,然后重定向到该视图

    @RequestMapping("processing.htm")
    public String method(){
      //Some proccessing
      return "redirect:success.htm"
    }
    
    @RequestMapping("success.htm")
    public String method(){
      return "tiles:tileName"
    }
    

    当您只需要显示“谢谢”页面时,这种情况可以正常工作,不需要处理阶段的特定数据。但是,如果您的成功页面需要显示处理中的一些信息,有两种方法可以做到。

    1) 将 url 中的信息作为 get post ("redirect:success.htm?message=hi") 传递。这是非常容易破解的,因此非常不推荐。

    2)更好的方法是在http会话中存储信息,使用@SessionAttributes@ModelAttribute

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多