辽宁省建设科学研究院网站,seo网上培训多少钱,温州企业做网站,360免费建站连接Spring3中的FlashAttribute 为 了防止用户刷新重复提交#xff0c;save操作之后一般会redirect到另一个页面#xff0c;同时带点操作成功的提示信息。因为是Redirect#xff0c;Request里 的attribute不会传递过去#xff0c;如果放在session中#xff0c;则需要在显示后及…Spring3中的FlashAttribute 为 了防止用户刷新重复提交save操作之后一般会redirect到另一个页面同时带点操作成功的提示信息。因为是RedirectRequest里 的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 idmyform actionsaveUserDetails.action methodPOST commandNameuserform:input typetext namefirstName pathfirstName/form:input typetext namelastName pathlastName/form:input typetext nameemail pathemail/input typesubmit valuesubmit
/form:form 则在controller中可以这样 RequestMapping(value/saveUserDetails.action, methodRequestMethod.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
h1Hello ${firstName} ${lastName}. Your details stored in our database./h1
/divbr 但如果F5的时候会发现参数丢失因为flash scope其实只支持redirect的所以可以判断下 RequestMapping(value/success.html, methodRequestMethod.GET)public String successView(HttpServletRequest request){MapString,? map RequestContextUtils.getInputFlashMap(request); if (map!null)return success;else return redirect:someOtherView; //給出其他提示信息 转载于:https://www.cnblogs.com/longshiyVip/p/5288270.html