ActionContext.getContext().put("test1", "abcValue");
为什么 s:property value="#request.test1" 也能获取到值
我一直以为只能这样 s:property value="#test1"

s:property value="#request.test1"

这个test1存在的地方有三个
1、request域里 变量名为 test1

2、valueStack里,属性名为 test1

3、StackContext里。 key=test1

如果 2中为空, 3中不为空 ,则取 3


等价于((Map)ActionContext.getContext().get("request")).get("test1")
之所以test1这个变量可以存在于三地方,是由于:
由于struts拦截了request.getAttribute()方法并重新实现了它,如果HttpServletRequest没有我们要的属性,
就从valuestack中找,还没有最后从StackContext中找我们Put的对象 .

ValueStack 值栈

StackContext 栈上下文

StackContext里也有ValueStack把valueStack设为了根对象,放到值栈。
-----------------------------------------------------------------------------------------

StackContext里的request里也存放了ValueStack.
所以,如果我往值栈里放一个东西,那么它发挥作用的范围应该与request里的一样。
所以用户登入的信息不能放到action里。放到action里跟放到request里一样。
action里的属性能放入值栈中,一定要保证该属性有setXX()方法。
-----------------------------------------------------------------------------------------


ActionContext.getContext().get("request") 得到的是一个Object
ActionContext.getContext().getSession() 得到的是一个Map()
所以
ActionContext.getContext().get("request").get("test1")要强制转化一下
((Map)ActionContext.getContext().get("request")).get("test1")

ActionContext.getContext().getSession().get("test2")不用。



  

爱华网本文地址 » http://www.aihuau.com/a/25101014/208437.html

更多阅读

二十年公司:表面的胜利

到现在为止,似乎还没有哪一家著名的中国公司打算为创业二十周年举办大型的庆祝活动,这实在是一个十分罕见的现象,因为我们向来有喜欢“庆生”的传统。更何况,这是一些如此具有象征意义的名字:海尔、联想、万科、四通、科龙、健力宝,如果

中国企业:CEO落后台湾三十年

系列专题:改革开放三十年 我最近去了台湾,在与许多台湾的工商界人士交流时,发现一个特点,这些人大多是台湾企业家的第二代,或者叫1.5代。所谓1.5代是指,他们从年龄上是第二代人,但是家族事业只是他们事业的一部分,更大一部分由自己开创。

中国队亚洲杯历史战绩 2015亚洲杯中国队赛程

2015亚洲杯中国队赛程2015年亚洲杯具体分组:亚洲杯A组:澳大利亚、韩国、阿曼、科威特亚洲杯B组:乌兹别克斯坦、沙特阿拉伯、中国、朝鲜亚洲杯C组:伊朗、阿联酋、卡塔尔、巴林亚洲杯D组:日本、约旦、伊拉克、巴勒斯坦2015亚洲杯小

dreamleague神秘球员 神秘魔盒dream box 通关攻略

神秘魔盒dream box 通关攻略――简介神秘魔盒是一款解谜类游戏,追随主人公来到祖父母的家中,寻找失落的线索,打开神秘的魔盒。神秘魔盒dream box 通关攻略――方法/步骤神秘魔盒dream box 通关攻略 1、游戏开始,是一扇铁门,点击门边的木

2016年证券交易印花税 2016网上证券交易合同书模板

  网上证券交易,是指投资者通过互联网来进行证券买卖的一种方式,那么你听说过网上证券交易合同吗?下面由爱华网小编为你详细介绍网上证券交易合同的相关法律知识。  2016网上证券交易合同书模板  网上证券交易合同书 

声明:《》为网友幸福的时光分享!如侵犯到您的合法权益请联系我们删除