当前位置: 首页 > 知识库问答 >
问题:

重定向到带有参数的控制器操作时,无法访问redirectAttributes

宁修永
2023-03-14

在Spring MVC中,

当返回值包含重定向前缀时,viewResolver将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。客户端将向该重定向URL发送一个新请求

我们可以编写如下处理程序方法来处理重定向:

@RequestMapping(value="/foo", method = RequestMethod.POST )
public String foo(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes)  {
    redirectAttributes.addFlashAttribute("message", "I am message");
    return "redirect:/bar";
}

现在我们可以像这样在bar()中访问这个重定向属性

@RequestMapping(value="/bar", method = RequestMethod.GET )
public String bar(HttpServletRequest request, HttpServletResponse response, Model model)  {
    String error = (String) model.asMap().get("message");
}

通常我们可以在bar()方法中访问这个重定向属性,但是当我在返回语句中指定一个URL作为参数化url时,如下所示

return "redirect:/bar?x=1&y=2";

我无法访问重定向属性

我进一步检查了chrome中的网络,发现在重定向后,在return语句中使用未参数化url时,jsessionid保持不变,但在使用参数化url时,它确实发生了变化。

有人能告诉我为什么会这样吗?或者我在哪里出错了?

共有1个答案

白刚洁
2023-03-14

如果要访问重定向控制器中的参数x和y的值,需要从请求中获取参数

@RequestMapping(value="/bar", method = RequestMethod.GET )
  public String bar(HttpServletRequest request, HttpServletResponse response, Model model)  {
      System.out.println(request.getParameter("y"));
      return null;
  }
 类似资料:
  • 我试图重定向路由从控制器函数后,在Laravel 5.4表单提交过程中,如下面的链接所说 https://laravel.com/docs/5.4/redirects#redirecting-命名路线 路线; 控制器; 当我试图重定向我得到这个错误。 InvalidArgumentExcema在UrlGenerator.php304行:路由[配置文件]未定义。 关于重定向,我已经搜索了好几次,但都

  • 我是一个使用ASP.NET MVC5的新手。我需要对控制器进行Jquery调用,以返回一个传递单个参数的新视图。我可以看到很多类似MVC3和之前版本的例子,但却很难找到任何处理MVC4或MVC5并起作用的例子。我所要做的就是从输入元素获取一个值,将其传递给控制器ActionResult,然后打开一个新视图。 PageTwo是视图,Home是控制器。 我试过的代码(包括许多其他代码)通常在404:

  • 问题内容: 我正在为struts2拦截器创建一个示例。我创建了一个简单的登录页面,并使用了自定义拦截器类对输入进行加密。但是拦截器正在从as 读取输入的值。 我不明白我在做什么错。我想拦截器类已经足够了。如果您需要更多我的代码,请告诉。 struts.xml 拦截器.java文件 是我定义的一个单独的类,它自己可以正常工作。 问题答案: 如果您要访问参数,则拦截器应排在第一位 您的问题是这些参数不

  • Swagger不在UI和JSON中显示参数,即使我的方法有参数,当我添加[FromBody]标记 Swagger UI无参数JSON文件无参数 操作方法时,尤其会发生这种情况: 我使用全新的 Asp.net 核心3.1和2.2 Web应用程序与API模板来测试这一点,我完全按照文档配置 服务进行了配置: 配置:< br > 当我使用[FromRoute]等其他属性时,它确实起作用 我还尝试了这样的

  • 我有Spring acpect,它会在我的应用程序中的每个控制器方法周围触发。在方面的主体中,我想访问方法签名中声明的所有请求参数。有没有一种简单的方法可以避免反思?

  • 问题内容: 我注意到以下代码将用户重定向到项目内的URL, 然而,以下内容已按预期正确重定向,但需要http://或https:// 我希望重定向始终重定向到指 问题答案: 你可以通过两种方式来实现。 第一: 第二: