return “redirect:/spitter/” + spitter.geturname();
当一个控制器返回的是公司元旦晚会主持词一个redirect时,原来的request会终止,并且会开启一个新的http请求。原来request中所有的model数据都会清空。新的request不会有任何的model数据,如图:
现在不能再redirect时使用model来传递数据了。但是还有其他方法用来从重定向的方法中获取数据:
将数据转换为路学校消防演练径参数或者查询参数在flash属性中发送数据首先来看一下spring如何在路径参数或者查询参数中传递数据。@requestmapping(value="/register", method=post)public string processregistration(spitter spitter, model model) { spitterrepository.save(spitter); model.addattribute("urname", spitter.geturname()); return "redirect:/spitter/{urname}";}@requestmapping(value = "/{urname}", method = requestmethod.get) public string showspitterprofile(@pathvariable string urname, model model) { system.out.println("showspitterprofile"); spitter spitter = spittlerepository.findbyurname(urname); model.addattribute(spitter); return "profile"; }
model中其他的原始值也会作为查询参数添加到重定向url中。例如,除了urname,model同时也包括新建的spitter对象的id属性:
@requestmapping(value="/register", method=post)public string processregistration(spitter spitter, model model) { spitterrepository.save(spitter); model.addattribute("urname", spitter.geturname()); model.addattribute("spitterid", spitter.getid()); return "redirect:/spitter/{urname}";}
但是由于model中的spitterid属性并没有映射到url中的占位符,它会自动作为查询参数。
如果urname是habuma,spitterid是42,那么返回的重定向路径将是/spitter/habuma?spitterid=42。
spring提供了通过redirectattributes来设置flash属性,redirectattributes作为model的子接口,新增了一些方法用来设置flash属性。
@requestmapping(value="/register", method=post)public string pro马蜂菜cessregistration(spitter spitter, redirectattributes model) { spitterrepository.save(spitter); model.addattribute("urname", spitter.geturname()); model.addflashattribute("spitter", spitter); return "redirect:/spitter/{urname}";}
在重定向执行之前,所有的flash属性都会复制到会话中。在重定向后,存在会话中的flash属性会被取出,并从会话转移到模型之中。处理重定向的方法就能从模型中访问spitter对象了,就像获取其他的模型对象一样
@requestmapping(value = "/{urname}", method = requestmethod.get)public string showspitterprofile(@pathvariable("urname") string urname, model model) { if (!model.containsattribute("spitter")) { spitter spitter = spitterrepository.findbyurname(urname); model.addattribute(spitter); } return "profile";}
showspitterprofile()方法所做的第一件事就是检查是否存有key为spitter的model属性。如果模型中包含spitter属性,那就什么都不用做了。这里面包含的spitter对象将会传递到视图中进行渲染。但是如果模型中不包含spitter属性的话,那么showspitterprofile()将会从repository中查找spitter,并将其存放到模型中。
重新定向显示数据
........<%@ taglib uri="/d/file/titlepic/" prefix="c" %>........urname:<c:out value="${spitter.urname}"/><br/>firstname:<c:out value="${spitter.firstname}"/>lastname: <c:out value="${spitter.lastname}"/><br/>email:<c:out value="${spitter.email}"/>....
return "redirect:/page/cond?param1=lay¶m2=lay2";
public string fi唐代皇帝顺序rst(redirectattribute redirectattribute){ redirectattribute.addattribute("param1", "lay"); return "redirect:/page/cond";}
@controller@requestmapping("/page")public class redirectdemo{ @requestmapping("/first") public string first(redirectattribute redirectattribute){ redirectattribute.addflashattibute("param1", "lay"); return "redirect:/page/cond"; } @requestmapping("/cond") public string cond(@m三八妇女节祝福图片odelattribute("param1") string param1){ system.out.println(param1); return "cond"; }}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 03:34:52,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4dfcdf775552fd71e2c8d69bf0bda43c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:SpringMVC 重新定向redirect请求中携带数据方式.doc
本文 PDF 下载地址:SpringMVC 重新定向redirect请求中携带数据方式.pdf
留言与评论(共有 0 条评论) |