Spring3中的FlashAttribute

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

记得在spring mvc2中,当保存POJO到数据库后,要返回成功页面,如果这个时候要带点信息, 则要这样:

    //第三个参数(UserModel user)默认为绑定对象@RequestMapping(value = "/user/save", method = RequestMethod.POST)public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response,UserModel user) throws Exception {ModelAndView mv = new ModelAndView("/user/save/result");//默认为forward模式
//        ModelAndView mv = new ModelAndView("redirect:/user/save/result");//redirect模式mv.addObject("message","保存用户成功!");return mv;}

而在spring mvc 3.1后,可以这样

    @RequestMapping(value = "/user/save", method = RequestMethod.POST)public ModelAndView saveUser(UserModel user, RedirectAttributes redirectAttributes) throws Exception {redirectAttributes.addFlashAttribute("message", "保存用户成功!");//使用addFlashAttribute,参数不会出现在url地址栏中return "redirect:/user/save/result";}

来个稍微完整点的例子,首先是一个表单,在其中填入一些信息:

<form:form id="myform" action="saveUserDetails.action" method="POST" commandName="user"><form:input type="text" name="firstName" path="firstName"/><form:input type="text" name="lastName" path="lastName"/><form:input type="text" name="email" path="email"/><input type="submit" value="submit">
</form:form>

则在controller中,可以这样:

 @RequestMapping(value="/saveUserDetails.action", method=RequestMethod.POST)
public String greetingsAction(@Validated User user,RedirectAttributes redirectAttributes){   someUserdetailsService.save(user);redirectAttributes.addFlashAttribute("firstName", user.getFirstName());redirectAttributes.addFlashAttribute("lastName", user.getLastName())return "redirect:success.html";
}

success.html:

<div>
<h1>Hello ${firstName} ${lastName}. Your details stored in our database.</h1>
</div><br> 

但如果F5的时候,会发现参数丢失,因为flash scope其实只支持redirect的,所以可以判断下:

@RequestMapping(value="/success.html", method=RequestMethod.GET)public String successView(HttpServletRequest request){Map<String,?> map = RequestContextUtils.getInputFlashMap(request); if (map!=null)return "success";else return "redirect:someOtherView"; //給出其他提示信息

转载于:https://www.cnblogs.com/longshiyVip/p/5288270.html

Spring中RedirectAttributes对象重定向传参相关推荐

  1. ajax redirectattributes 使用,Spring中RedirectAttributes对象重定向传参

    Spring3中的FlashAttribute 为 了防止用户刷新重复提交,save操作之后一般会redirect到另一个页面,同时带点操作成功的提示信息.因为是Redirect,Request里 的 ...

  2. spring mvc controller间跳转 重定向 传参

    spring mvc controller间跳转 重定向 传参 1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形 ...

  3. Spring mvc Controller间跳转/重定向/传参

    Spring mvc Controller常用写法 1.ModelAndView @RequestMapping(value = "/getxxxList.html") publi ...

  4. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  5. MySQL在脚本中执行传参数_ZZW_shell脚本中的调用MYSQL传参及注意的问题

    [oracle@ip9140 db_pcc]$ cat zzw_cc.sh #!/bin/bash z_user='pcc_csuser22' z_pass='pcc_csuser22' z_db=' ...

  6. js中使用进行字符串传参

    在js中拼接html标签传参时,如果方法参数是字符串需要加上引号,这里需要进行字符转义 <a href='javascript:addMenuUI("+"\"&qu ...

  7. Spring中Bean对象的存储和获取

    目录 1. 更简单的将bean存储到spring中 1.0 前置工作,在配置文件中设置bean扫描的根路径 1.1 通过注解将bean存储到spring中 1.1.1 @Controller[控制器] ...

  8. quartz定时任务中如何给MyJob传参

    quartz定时任务中如何给MyJob传参 在调度服务中使用语句传参 在myjob中接收参数 在调度服务类中,定义一个私有变量,并添加setter方法用于赋值.这里的私有变量就是需要向myjob传递的 ...

  9. jeecg-boot中popup实现动态传参

    jeecg-boot中popup实现动态传参 环境: 功能实现: 后话: 环境: 最近任务是基于jeecg-boot框架的,用的是jeecg-boot V2.4.0版. 功能实现: 有表"p ...

最新文章

  1. 几个机器学习算法及应用领域相关的中国大牛
  2. STM32F4 HAL库开发 -- 再识
  3. Vue学习笔记(五)—— 状态管理Vuex
  4. Hive鉴权方式说明
  5. 运维派送福利,就是这么任性!
  6. 使用mouse without borders无界键盘鼠标工具实现一套键盘鼠标控制两台电脑(非常的奈斯)
  7. Photoshop照片模糊变清晰大全
  8. 学习华为云人脸识别踩坑,The subservice has not been subscribed和FRS.0020错误,projectId的获取
  9. hiber+spring继续找bug
  10. 提高工作效率必备的生产力工具
  11. Unity Text字体花屏
  12. 可扩展性设计之数据切分
  13. stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)
  14. 题破山寺后禅院-唐代诗人常建
  15. 利用Calendar简洁制作万年历
  16. 18-12-19 美国7-11连锁店
  17. 条形码打印机无法打印条形码
  18. 手把手教你如何用XMind制作思维导图
  19. 及时复盘的好处_聪明的工作,成为改进者,及时复盘。
  20. 怎么免费将图片转成可以修改的Word

热门文章

  1. [Nikon D80]樱花盛开的校园
  2. 西电网络攻防大赛--渗透测试第二题
  3. div table 超出了_div包裹的table,table的宽度超出了的宽度,出现的滚动条的在windows下无法拖动...
  4. 爬虫数据executemany插入_金融数据的获取——一个爬虫的简单例子
  5. Django-安装xadmin的方法及主要配置方法
  6. SQL数据库实战(含建表数据和查询案例)
  7. php数值操作,php数值计算num类简单操作示例
  8. python计算a的平方加b的平方_NumPy计算范数2的平方
  9. 【设计模式 00】设计模式的六大原则
  10. 大小端模式的快速判断方法