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.413yy.cn/a/25101014/208437.html

更多阅读

总手现手 现手是什么意思

1总手现手股市最小交易量是1手.为100股,对于一只股票最近的一笔成交量叫现手,从开盘到即时的成交量叫总手。现手数是说明电脑刚刚自动成交的那次成交量的大小。现手累计数就是总手数,即成交量。总手数与流通股数的比称为换手率,它说

第7节:多干就是赚到,权当给红花施肥啦(1)

系列专题:《职场女性生存法则:人人都是杜拉拉》  多干就是赚到,权当给红花施肥啦  镜头回放  杜拉拉天性是个勤快人,大学毕业分配到国营单位那会儿,她就成天找活干,惹得同科室那班习惯于看报喝茶的同事们一致讨厌她。毕业将近八年,

微胖女孩穿衣搭配秋季 微胖女生秋季穿衣搭配技巧

   微胖女生秋季穿衣搭配技巧  显瘦搭配1、长袖上衣+牛仔裤+英伦皮鞋+针织帽  粉色宽松卡通圆领上衣胖女生穿上很俏皮甜美,搭配一款复古破洞牛仔裤和一双英伦风皮鞋,非常显瘦好看的搭配。  胖女生显瘦穿衣搭配条纹

送给老师的新年祝福语 送给企业的新年祝福语2015

   1.律回春晖渐,万象始更新。我们告别成绩斐然的2014,迎来了充满希望的2015,值此新春到来之际,我谨代表集团董事局,向全体职员的努力进取和勤奋工作,投资者给予公司的真诚信赖、中外客户的热情支持致以深深的谢意!祝大家在新的一

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