Spring中RedirectAttributes对象重定向传参
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对象重定向传参相关推荐
- ajax redirectattributes 使用,Spring中RedirectAttributes对象重定向传参
Spring3中的FlashAttribute 为 了防止用户刷新重复提交,save操作之后一般会redirect到另一个页面,同时带点操作成功的提示信息.因为是Redirect,Request里 的 ...
- spring mvc controller间跳转 重定向 传参
spring mvc controller间跳转 重定向 传参 1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形 ...
- Spring mvc Controller间跳转/重定向/传参
Spring mvc Controller常用写法 1.ModelAndView @RequestMapping(value = "/getxxxList.html") publi ...
- Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目 录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...
- MySQL在脚本中执行传参数_ZZW_shell脚本中的调用MYSQL传参及注意的问题
[oracle@ip9140 db_pcc]$ cat zzw_cc.sh #!/bin/bash z_user='pcc_csuser22' z_pass='pcc_csuser22' z_db=' ...
- js中使用进行字符串传参
在js中拼接html标签传参时,如果方法参数是字符串需要加上引号,这里需要进行字符转义 <a href='javascript:addMenuUI("+"\"&qu ...
- Spring中Bean对象的存储和获取
目录 1. 更简单的将bean存储到spring中 1.0 前置工作,在配置文件中设置bean扫描的根路径 1.1 通过注解将bean存储到spring中 1.1.1 @Controller[控制器] ...
- quartz定时任务中如何给MyJob传参
quartz定时任务中如何给MyJob传参 在调度服务中使用语句传参 在myjob中接收参数 在调度服务类中,定义一个私有变量,并添加setter方法用于赋值.这里的私有变量就是需要向myjob传递的 ...
- jeecg-boot中popup实现动态传参
jeecg-boot中popup实现动态传参 环境: 功能实现: 后话: 环境: 最近任务是基于jeecg-boot框架的,用的是jeecg-boot V2.4.0版. 功能实现: 有表"p ...
最新文章
- 几个机器学习算法及应用领域相关的中国大牛
- STM32F4 HAL库开发 -- 再识
- Vue学习笔记(五)—— 状态管理Vuex
- Hive鉴权方式说明
- 运维派送福利,就是这么任性!
- 使用mouse without borders无界键盘鼠标工具实现一套键盘鼠标控制两台电脑(非常的奈斯)
- Photoshop照片模糊变清晰大全
- 学习华为云人脸识别踩坑,The subservice has not been subscribed和FRS.0020错误,projectId的获取
- hiber+spring继续找bug
- 提高工作效率必备的生产力工具
- Unity Text字体花屏
- 可扩展性设计之数据切分
- stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)
- 题破山寺后禅院-唐代诗人常建
- 利用Calendar简洁制作万年历
- 18-12-19 美国7-11连锁店
- 条形码打印机无法打印条形码
- 手把手教你如何用XMind制作思维导图
- 及时复盘的好处_聪明的工作,成为改进者,及时复盘。
- 怎么免费将图片转成可以修改的Word
热门文章
- [Nikon D80]樱花盛开的校园
- 西电网络攻防大赛--渗透测试第二题
- div table 超出了_div包裹的table,table的宽度超出了的宽度,出现的滚动条的在windows下无法拖动...
- 爬虫数据executemany插入_金融数据的获取——一个爬虫的简单例子
- Django-安装xadmin的方法及主要配置方法
- SQL数据库实战(含建表数据和查询案例)
- php数值操作,php数值计算num类简单操作示例
- python计算a的平方加b的平方_NumPy计算范数2的平方
- 【设计模式 00】设计模式的六大原则
- 大小端模式的快速判断方法