如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
ActionContext、ValueStack、StackContextActionContext一次Action调用都会创建一个ActionContext调用:ActionContextcontext=ActionContext.getContext()ValueStack由OGNL框架实现可以把它简单的看作一个栈(List)。StackObject:放入stack中的对象,一般是action。StackContext(map):stack上下文,它包含一系列对象,包括request/session/attr/applicationmap等。EL:存取对象的任意属性,调用对象的方法,遍历整个对象结…ActionContext是Action上下文,可以得到requestsessionapplicationValueStack是值栈存放表单中的值StackContext栈上下文也是用来存值的struts2对OGNL上下文的概念又做了进一步扩充,在struts2中,OGNL上下文通常如下所示:|--request||--application|contextmap---|--OgnlValueStack(root)[user,action,OgnlUtil,...]||--session||--attr||--parameters在Struts2中,采用标准命名的上下文(Context)来处理OGNL表达式。处理OGNL的顶级对象是一个Map(也叫contextmap),而OGNL在这个context中就是一个顶级对象(root)。在用法上,顶级对象的属性访问,是不需要任何标记前缀的。而其它非顶级的对象访问,需要使用#标记。Struts2框架把OGNLContext设置为我们的ActionContext。并且ValueStack作为OGNL的根对象。除valuestack之外,Struts2框架还把代表application、session、request这些对象的Map对象也放到ActionContext中去。(这也就是Struts2建议在Action类中不要直接访问ServletAPI的原因,他可以通过ActionContext对象来部分代替这些(ServletAPI)功能,以方便对Action类进行测试!)Action的实例,总是放到valuestack中。因为Action放在stack中,而stack是root(根对象),所以对Action中的属性的访问就可以省略#标记。但是,要访问ActionContext中其它对象的属性,就必须要带上#标记,以便让OGNL知道,不是从根对象,而是从其它对象中去寻找。那么访问Action中的属性的代码就可以这样写<s:propertyvalue="postalCode"/>其它ActionContext中的非根对象属性的访问要像下面这样写:<s:propertyvalue="#session.mySessionPropKey"/>or<s:propertyvalue="#session['mySessionPropKey']"/>or<s:propertyvalue="#request['myRequestPropKey']"/>对Collection的处理,内容就很简单。<s:selectlabel="label"name="name"list="{'name1','name2','name3'}"value="%{'name2'}"/>这是处理List。这个代码在页面上建立一个下拉选项,内容是list中的内容,默认值是name2.处理map<s:selectlabel="label"name="name"list="#{'foo':'foovalue','bar':'barvalue'}"/>需要注意的是,判断一个值是否在collection中。我们要使用in或者notin来处理。<s:iftest="'foo'in{'foo','bar'}">muhahaha</s:if><s:else>boo</s:else>另外,可以使用通配符来选择collection对象的子集。?——所有匹配选择逻辑的元素^——只提取符合选择逻辑的第一个元素$——只提取符合选择逻辑的最后一个元素person.relatives.{?#this.gender=='male'}`````````````````````````````````````````````````````````````````````````````````以下为补充摘录的一些问题:提问:在Struts2中,如何使用自身的Tag读取Action中的变量?Struts2自身的Tag会根据