`

spring mvc3中的addFlashAttribute方法

阅读更多
  记得在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"; //給出其他提示信息
6
1
分享到:
评论
4 楼 diypyh 2016-01-06  
我的是Spring MVC 4.2.4,但是有问题:

	@RequestMapping(value = "/test1", method = RequestMethod.POST)
	public String test1(@Validated SysUser sysUser, BindingResult result, RedirectAttributes attr) {
		String url = "redirect:/index.jsp";
		try {
			if (result.hasErrors()) {
				Map<String, String> errors = buileValidatedMessage(result);
				System.out.println(errors);
				attr.addFlashAttribute("errMsg", errors);
				attr.addFlashAttribute("myinfo", "123456789");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return url;
	}


JSP:
	<h2>Hello World!</h2>
	<h3>1.${myinfo}</h3>
	<h3>2.${errMsg}</h3>


这样在页面上没有数据输出,但是在JSP页面上输出session信息时,发现了以下的数据:
org.springframework.web.servlet.support.SessionFlashMapManager.FLASH_MAPS : [FlashMap [attributes={errMsg={fdPassword=密码不能空, fdUsername=用户名不能空;用户名长度必须在3~10个字符之间}, myinfo=123456789}, targetRequestPath=/smart/index.jsp, targetRequestParams={}]]

这要怎么做才能正确的输出我要的信息呢
3 楼 jackyrong 2013-02-18  
zhouhongqiang2010 写道
博主好像我认识的陈士军啊,。。


呵呵,可惜不是
2 楼 zhouhongqiang2010 2013-02-18  
博主好像我认识的陈士军啊,。。
1 楼 freezingsky 2013-02-14  
不错。

相关推荐

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

    标题中的“spring学习:spring mvc在redirect请求中传递数据”指的是在Spring MVC框架中,如何在重定向(Redirect)请求过程中传递参数。这通常涉及到HTTP响应的状态码、重定向URL以及模型数据的处理。在Spring MVC...

    Spring MVC— 处理器(Handler)方法的返回值.docx

    在Spring MVC框架中,处理器(Handler)方法是处理用户请求的核心组件。这些方法通常定义在@Controller注解的类中,并通过@RequestMapping或其相关的注解来指定处理特定HTTP请求的路径。处理器方法的返回值非常关键...

    spring mvc controller间跳转 重定向 传参

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

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

    在Spring MVC框架中进行页面重定向操作时,可能会遇到因重定向导致的内存溢出问题。本文将详细介绍该问题的原因、原理以及解决方法。 #### 一、问题背景及原因分析 在Spring MVC中使用重定向功能时,可以通过`...

    s:mvcURL如何使用

    在Spring MVC 4.1.x框架中,`mvcURL`是一个关键的概念,它涉及到控制器(Controller)与视图(View)之间的交互。本篇将详细解释`mvcURL`的使用方法,以及它如何帮助我们构建高效、灵活的Web应用程序。 首先,`mvc...

    SpringMVC-5 视图和视图解析器

    在Spring MVC框架中,视图和视图解析器是核心组件,它们负责处理控制器返回的数据并将其呈现给用户。本文将深入探讨视图与视图解析器的工作原理、常用实现及自定义视图的实现方法,同时也会讲解重定向操作。 1. **...

    基于Springboot +activiti实现的一个前后端分离的企业级OA管理系统(源码+数据库)

    基于Springboot +activiti实现...&gt; 在Spring MVC中,被@RequestMapping注解的方法,可以接收 &gt; RedirectAttributes ra参数,通过ra.addFlashAttribute(key,value) &gt; 可以向模板文件中注册名称为key,值为value的对象。

    springmvc-demo07-响应(数据共享,页面跳转).zip

    3. **控制器方法**:Spring MVC通过`@RequestMapping`注解标识控制器方法,处理特定的HTTP请求。可以指定请求的URL、HTTP方法(GET、POST等)和其他参数来精确匹配请求。例如: ```java @RequestMapping(value = ...

    (代码)SpringMVC第6讲:请求转发和重定向

    - 在Spring MVC中,我们通常使用`DispatcherServlet`的`forward`方法或者`RequestDispatcher`对象来实现请求转发。例如,控制器方法中可以写入如下代码: ```java @RequestMapping("/forwardExample") public ...

    使用Springboot上传图片并将URL保存到数据库中

    import org.springframework.web.servlet.mvc.support.RedirectAttributes; public class UploadController { @PostMapping("/upload") public ResponseEntity&lt;?&gt; upload(@RequestParam("file") MultipartFile ...

    SpringBoot文件上传.zip

    在SpringBoot 2.x版本中,文件上传可以通过集成Spring MVC的MultipartResolver组件来实现,这使得处理文件上传变得非常简单。下面我们将详细探讨如何在SpringBoot项目中实现单文件和多文件的上传。 首先,为了实现...

    Spring RedirectAttributes参数跳转代码实例

    在Spring MVC框架中,RedirectAttributes是一个关键工具,它允许我们在处理完一个请求后进行重定向,并且能够携带参数。这个特性在3.1版本之后被引入,目的是为了更安全、更优雅地处理重定向时的数据传递。本文将...

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

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

    java 如何对网页进行重新定向

    总结来说,Java中实现网页重定向主要通过`HttpServletResponse`的`sendRedirect()`方法,而在Spring框架中则有更多高级的选项,如`RedirectView`和`RedirectAttributes`。理解并掌握这些方法,对于构建动态和交互性...

    springboot-fileUpload

    3. **处理上传逻辑**:在`handleFileUpload`方法中,我们需要检查文件是否有效,然后将其保存到服务器。可以使用`file.transferTo()`方法将文件保存到指定位置。同时,不要忘记处理可能出现的异常。 ```java try { ...

    springMVC教程

    `redirectAttributes.addFlashAttribute()` 可以将数据添加到 Flash 属性中,仅在一次重定向后可用。`modelAndView.setViewName("forward:/yourPage")` 或 `modelAndView.setViewName("redirect:/yourPage")` 分别...

    springboot集成上传下载

    import org.springframework.web.servlet.mvc.support.RedirectAttributes; import java.io.File; import java.io.IOException; @Controller public class FileController { @PostMapping("/upload") public ...

    springboot实现邮箱发送功能

    在Spring Boot应用中,实现邮件发送功能是一项常见的需求,它能够帮助我们自动化处理通知、确认订单、发送报告等任务。本案例重点讲解如何利用Spring Boot集成JavaMailSenderImpl类,结合QQ邮箱的设置来实现邮件的...

    SprignBoot中实现文件上传示例代码

    import org.springframework.web.servlet.mvc.support.RedirectAttributes; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; @Controller public class FileUploadController { @...

Global site tag (gtag.js) - Google Analytics