You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC重定向后传数据至视图:RedirectAttribute无法生效求助

解决RedirectAttributes传递数据失效的问题

咱们先揪出核心问题:你用RedirectAttributes没生效,大概率是用法不对或者配置没到位,下面一步步来修正:

1. 正确使用addFlashAttribute传递跨请求数据

重定向是两次完全独立的请求,普通Model数据没法跨请求传递,必须用addFlashAttribute把数据存入临时session,Spring会自动在重定向完成后清理这个session数据,避免内存占用。

修正你的控制器代码:

@RequestMapping(value = "/user.htm")
public ModelAndView addUser(RedirectAttributes redirAtt) {
    ModelAndView mv = new ModelAndView("redirect:user");
    String out = "All Users List";
    // 用addFlashAttribute存储跨请求需要传递的数据
    redirAtt.addFlashAttribute("userMessage", out);
    // 如果要传递对象/集合也可以,比如:redirAtt.addFlashAttribute("userList", userService.getAllUsers());
    return mv;
}

2. 在目标视图/控制器中获取数据

如果redirect:user是直接跳转到视图(比如user.jsp),直接在视图里用EL表达式访问即可:

<!-- user.jsp 示例 -->
<h3>${userMessage}</h3>
<!-- 如果传递了用户列表,遍历展示 -->
<c:forEach items="${userList}" var="user">
    <p>用户名:${user.username} | 邮箱:${user.email}</p>
</c:forEach>

如果redirect:user对应另一个控制器方法,你可以用@ModelAttribute接收flash属性:

@RequestMapping("/user")
public String showUsers(@ModelAttribute("userMessage") String message, Model model) {
    // 可以把数据再放到Model里供视图使用,或者直接在方法内逻辑处理
    model.addAttribute("pageMessage", message);
    return "user";
}

3. 确保Spring MVC配置支持Flash属性

如果以上操作还是没效果,检查你的Spring配置:

  • 若用XML配置,确保添加了<mvc:annotation-driven />,它会自动注册FlashMapManager组件来处理flash属性。
  • 若用Java配置,确保配置类上标注了@EnableWebMvc,同样会自动配置相关支持组件。

常见误区提醒

  • 别用addAttribute代替addFlashAttribute:addAttribute会把数据拼到重定向的URL上,仅适合简单字符串参数,敏感数据或复杂对象不适用,还可能出现编码问题。
  • 重定向路径要准确:redirect:user是相对路径,要和你的控制器映射路径匹配;如果是项目根路径下的映射,建议写redirect:/user(带斜杠的绝对路径)。

内容的提问来源于stack exchange,提问作者B K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:26:48