获取重定向到你的页面,Spring MVC

时间:2014-02-05 10:01:49

标签: java spring jsp redirect controller

我有以下问题。我想使用一个控制器,对于我的应用程序中的每个页面都是如此。这是一个常见的表单,包括每个页面中的jsp,它将邮件发送到预定义的电子邮件帐户。问题是,当我发布表单时,我被重定向到一个空白页面,其中url是我的RequestMapping值,尽管调用的方法实际上是无效的。所以我现在需要在将邮件发送到我来自的页面后重定向我。如何访问重定向我的页面的URL链接,发送电子邮件?感谢

1 个答案:

答案 0 :(得分:2)

当返回void并且一个人没有处理自己编写响应时,Spring MVC委托检测哪个视图呈现给RequestToViewNameTranslator,其中只有一个实现DefaultRequestToViewNameTranslator。这基本上采用传入的URL,删除任何后缀(如.html等)并将其用作视图名称。你现在看到的行为。

我猜你有3个可能的解决方案

  1. 添加包含当前页面的隐藏表单属性
  2. 使用referer请求标头确定请求的来源(不是100%解决方案,请参阅Alternative to "Referer" Header
  3. 通过ajax提交表单,以便您保持当前页面
  4. 对于选项2,将HttpServletRequest作为参数添加到请求处理方法中并检索标题。

    public String foo(HttpServletRequest request) {
        String referer = request.getHeader("Referer");
        return "redirect:" + referer;
    }
    

    我可能会选择选项3,如果没有可用的JavaScript,可能会将选项1添加为后备。