ActionContext、ValueStack、Stack Context 间的关系
最近在学习Struts2,对于其中的ActionContext、ValueStack、Stack Context之间的关系总感觉有些模糊,网上找了下也没有详细分析的文章,不知各位对于它们之间的关系如何理解?
[解决办法]
我最近也在学习。。已经在项目中实现了Struts2+spring2.5+hibernate3.2的整合。。。只是应用了下。。。关注
[解决办法]
模糊中。。。。。。。。
[解决办法]
看源码你就会发现,ActionContext这个类中有一个变量:
Map context,
实际上调用ActionContext的put,get 就相当于调用context的相就方法,你在页面上通过获取的就相当于调用context.get("request"),context.get("attr"),而你通过ac.put("list", List)也只能通过ac.get("list")获得。
而ActionContext.getValueStack()相当于调用context.get(OgnlValueStack.VALUE_STACK)所获取的与通过ActionContext.get("request")获取的是不一样的东西
[解决办法]
ActionContext
一次Action调用都会创建一个ActionContext
调用:ActionContext context = ActionContext.getContext()
ValueStack
由OGNL框架实现
可以把它简单的看作一个List
Stack Object:放入stack中的对象,一般是action。
Stack Context(map):stack上下文,它包含一些列对象,包括request/session/attr/application map等。
EL:存取对象的任意属性,调用对象的方法,遍历整个对象结构图。
[解决办法]
ActionContext是Action上下文
可以得到request session application
ValueStack是值栈 存放表单中的值
Stack Context 栈上下文 也是用来存值的
[解决办法]