`
zzc1684
  • 浏览: 1224809 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Spring中RedirectAttributes对象重定向传参

阅读更多

Struts2式的FlashAttribute

为 了防止用户刷新重复提交,save操作之后一般会redirect到另一个页面,同时带点操作成功的提示信息。因为是Redirect,Request里 的attribute不会传递过去,如果放在session中,则需要在显示后及时清理,不然下面每一页都带着这个信息也不对。Spring在3.1才提 供了这个能力。

public String save(@ModelAttribute("group") Group group, 
                    RedirectAttributes redirectAttributes) {
	accountManager.saveGroup(group);
	redirectAttributes.addFlashAttribute("message", "修改权限组成功");
	return "redirect:/account/group/";
}

 

 

spring mvc3中的addFlashAttribute方法

记得在spring mvc2中,当保存POJO到数据库后,要返回成功页面,如果这个时候要带点信息, 
则要这样: 
Java代码:  
  1.     //第三个参数(UserModel user)默认为绑定对象  
  2.     @RequestMapping(value = "/user/save", method = RequestMethod.POST)  
  3.     public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response,UserModel user) throws Exception {  
  4.         ModelAndView mv = new ModelAndView("/user/save/result");//默认为forward模式  
  5. //      ModelAndView mv = new ModelAndView("redirect:/user/save/result");//redirect模式  
  6.         mv.addObject("message","保存用户成功!");  
  7.         return mv;  
  8.     }  
 
 
而在spring mvc 3.1后,可以这样 
Java代码:  
  1. @RequestMapping(value = "/user/save", method = RequestMethod.POST)  
  2. public ModelAndView saveUser(UserModel user, RedirectAttributes redirectAttributes) throws Exception {  
  3.     redirectAttributes.addFlashAttribute("message", "保存用户成功!");//使用addFlashAttribute,参数不会出现在url地址栏中  
  4.     return "redirect:/user/save/result";  
  5. }  
 
 
  来个稍微完整点的例子,首先是一个表单,在其中填入一些信息: 
 
Java代码: 
  1. <form:form id="myform" action="saveUserDetails.action" method="POST" commandName="user">  
  2.    <form:input type="text" name="firstName" path="firstName"/>  
  3.    <form:input type="text" name="lastName" path="lastName"/>  
  4.    <form:input type="text" name="email" path="email"/>  
  5.    <input type="submit" value="submit">  
  6. </form:form>  
   
 
   则在controller中,可以这样: 
Java代码:  
  1.        @RequestMapping(value="/saveUserDetails.action", method=RequestMethod.POST)  
  2. public String greetingsAction(@Validated User user,RedirectAttributes redirectAttributes){  
  3.               
  4.                someUserdetailsService.save(user);  
  5.       
  6.                redirectAttributes.addFlashAttribute("firstName", user.getFirstName());  
  7.     redirectAttributes.addFlashAttribute("lastName", user.getLastName())  
  8.     return "redirect:success.html";  
  9. }  
  10.  
  11.  
  12.   success.html: 
  13. <div> 
  14. <h1>Hello ${firstName} ${lastName}. Your details stored in our database.</h1> 
  15. </div><br> 
 
  但如果F5的时候,会发现参数丢失,因为flash scope其实只支持redirect的,所以可以判断下: 
 
Java代码: 
  1. @RequestMapping(value="/success.html", method=RequestMethod.GET)  
  2.     public String successView(HttpServletRequest request){  
  3.         Map<String,?> map = RequestContextUtils.getInputFlashMap(request);   
  4.         if (map!=null)  
  5.            return "success";  
  6.         else return "redirect:someOtherView"; //給出其他提示信息 
分享到:
评论

相关推荐

    spring mvc controller间跳转 重定向 传参

    在 Spring MVC 框架中,controller 间跳转重定向传参是一个非常常见的需求。这里,我们将讨论三种常见的情况:不带参数跳转、带参数拼接 URL 形式跳转、带参数不拼接参数跳转。 一、不带参数跳转 在某些情况下,...

    springSecurity 实现传参

    在这个场景中,我们关注的是如何使用Spring Security实现登录验证以及在登录过程中传递参数,特别是记录并返回用户登录前的页面。我们将深入探讨这个过程,并结合MySQL数据库的使用。 首先,让我们了解Spring ...

    SpringCloud URL重定向及转发代码实例

    Spring Cloud URL重定向及转发代码实例是Spring Cloud框架中一个重要的知识点,本文将详细介绍Spring Cloud URL重定向及转发代码实例的使用方法和示例代码。 一、重定向(Redirect) 重定向是指将用户的请求从一个...

    spring mvc重定向导致内存溢出解决方案

    在Spring MVC中使用重定向功能时,可以通过`RedirectAttributes`接口向重定向的目标页面传递参数。这种方式非常方便,但在某些场景下,如果处理不当,则可能引发内存溢出的问题。 ##### 1.1 问题现象 考虑以下代码...

    spring boot前后端传参的实现

    Spring Boot 前后端传参实现 Spring Boot 框架提供了多种方式来实现前后端传参,包括使用 `@PathVariable`、`@RequestParam`、`@RequestBody` 等注解。本文将详细介绍这些注解的使用方法和示例代码。 使用 `@...

    springcloud gateway

    Spring Cloud Gateway 是一个基于 Spring Framework 5 和 Spring Boot 2 构建的微服务网关,它是 Spring Cloud 生态系统中的重要组件,旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它作为一个高可...

    Spring RedirectAttributes参数跳转代码实例

    在这个例子中,`list`方法会接收到`prama1`和`prama2`的值,即使它们是从RedirectAttributes中携带过来的。 ### 安全与最佳实践 使用RedirectAttributes时,应优先考虑使用`addFlashAttribute()`,因为它提供了更...

    SpringBoot 钉钉扫码登录以及重定向传递参数.rar

    钉钉扫码登录讲解 一、扫码登录参数准备 ... AppId 应用唯一标识 AppSecret 应用密钥 redirect_uri 重定向地址 loginTmpCode 临时授权码 ③、选择《服务端API》选项-&gt;《身份验证》-&gt;《扫码登录第三方网站》,得到教程

    spring-redirect:在Spring中重定向的不同方法

    本文将详细探讨在Spring中实现重定向的多种方法,并深入理解其工作原理。 首先,我们了解为什么要进行重定向。在Web应用程序中,重定向通常用于处理逻辑流程,比如用户登录后跳转到主页面、表单提交后的成功或错误...

    spring学习: spring mvc在redirect请求中传递数据

    以上就是关于“spring学习:spring mvc在redirect请求中传递数据”的详细解析,涵盖了重定向的基本原理、Spring MVC的`RedirectAttributes`接口、Flash Attributes的使用,以及在实际开发中的应用和注意事项。...

    PRGStarBucksSpringMVC:Spring mvc 项目后重定向获取模式,学习目的

    本文将深入探讨标题和描述中提到的“Spring MVC项目后重定向获取模式”,以及其在解决Post请求后显示页面问题中的应用。 首先,让我们理解一下为什么“显示页面以响应Post请求不是一个好主意”。在HTTP协议中,POST...

    普通对象使用spring容器中的对象的实现方法

    在这个实现方法中,我们可以使用spring框架提供的依赖注入机制来将spring容器中的对象注入到普通对象中,从而实现对spring容器中的对象的使用。 实现方法的主要思想是使用spring框架提供的ApplicationContextAware...

    spring 源码中文注释

    Spring框架是Java开发中最广泛应用的轻量级框架之一,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。这份"spring 源码...

    spring源码注释中文

    6. **Test**:测试模块支持在开发过程中对 Spring 应用进行单元测试和集成测试,提供了模拟对象、测试上下文框架以及与各种测试框架的集成。 7. **Spring Boot**:近年来,Spring Boot 成为了快速开发 Spring 应用...

    详解spring mvc 请求转发和重定向

    4. 每次重定向都会创建新的HttpServletRequest和HttpServletResponse对象,因此原始的请求信息不会在新的请求中保留。 在Spring MVC中,可以通过注解`@RequestMapping`结合`return "forward:/path"`或`return ...

    spring实例化对象

    spring实例化对象

    详解SpringMVC重定向传参数的实现

    在Spring MVC中,实现重定向可以通过`RedirectView`或在返回值中使用`redirect:`前缀。在提供的代码示例中,`DemoController`的`login`方法中,通过返回`"redirect:/home.jsp"`实现了重定向。这种方法简单直接,但...

    重定向OWA URL

    重定向OWA(Outlook Web App)URL是一个关键任务,特别是在企业环境中,为了提供安全的邮件访问服务。OWA是Microsoft Exchange Server中的一个组件,它允许用户通过Web浏览器访问其Exchange邮箱。以下是对这个过程的...

    spring mvc 登陆验证

    登录成功后,可以使用RedirectAttributes进行重定向,以防止表单重复提交。 **8. CSRF防护** 为了增强安全性,还需要考虑跨站请求伪造(CSRF)攻击的防护。Spring Security默认提供了CSRF保护,可以通过配置关闭或...

Global site tag (gtag.js) - Google Analytics