`
jiahh
  • 浏览: 37234 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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.    } 
//第三个参数(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后,可以这样

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.} 
@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";
}


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


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>  
7.  
<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中,可以这样:

Java代码 
1. 
2.       @RequestMapping(value="/saveUserDetails.action", method=RequestMethod.POST)  
3.public String greetingsAction(@Validated User user,RedirectAttributes redirectAttributes){  
4.              
5.               someUserdetailsService.save(user);  
6.      
7.               redirectAttributes.addFlashAttribute("firstName", user.getFirstName());  
8.    redirectAttributes.addFlashAttribute("lastName", user.getLastName())  
9.    return "redirect:success.html";  
10.} 

       @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的,所以可以判断下:
 
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 4

    , 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、...

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    Spring MVC入门教程

    十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    [免费]Spring MVC学习指南(高清)

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    Spring MVC 入门实例

    在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF...

    spring mvc 3_demo

    spring mvc 3_demo 注解实现

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    Spring MVC 教程 快速入门 深入分析

    十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    Spring MVC 4.2.3

    Spring mvc jar包

    spring MVC数据绑定大全

    spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...

    Spring mvc 教程

    很有用的Spring mvc中文文档

    Servlet JSP和Spring MVC初学指南

    Servlet JSP和Spring MVC初学指南

Global site tag (gtag.js) - Google Analytics