Struts2中的ValueStackStruts2中的ValueStack个人作品展示目录ValueStack的定义Action和ValueStack的关系ValueStack的常用方法从ValueStack对象中获取对象的顺序ValueStack的定义中文翻译为“值栈”类似于正常的栈,符合后进先出的特点Struts2核心概念,可以在值栈中放入、删除和查询对象ValueStack是一个接口,OgnlValueStack类是其在Struts2中的缺省实现ValueStack实际上就是对OGNL的封装和扩充,Struts2将值栈作为OGNL的根对象Action和ValueStack的关系Struts2总是把Action实例放置在值栈栈顶引用Action的属性可省略“#”标记,直接访问如果访问ActionContext中的其他对象,则必须使用“#”标记ValueStack的常用方法3-1voidset(Stringkey,Objecto)SetsanobjectonthestackwiththegivenkeysoitisretrievablebyfindValue(String)按照指定key将对象放入值栈voidsetValue(Stringexpr,Objectvalue)Attemptstosetapropertyonabeaninthestackwiththegivenexpressionusingthedefaultsearchorder将某个对象按照OGNL表达式放入值栈ValueStack的常用方法3-2voidpush(Objecto)Putthisobjectontothetopofthestack将对象置于值栈的栈顶ObjectfindValue(Stringexpr,ClassasType)Findavaluebyevaluatingthegivenexpressionagainstthestackinthedefaultsearchorder按照给定的OGNL表达式在值栈中查询数据ValueStack的常用方法3-3…
TestMethod.jsp<%Personperson=newPerson();person.setUserName("Tom");person.setAge(50);ValueStackvs=ActionContext.getContext().getValueStack();vs.set("person",person);Stringname=(String)vs.findValue("person.userName");out.print("
使用set将person对象放入栈顶后姓名是:"+name);vs.setValue("person.userName","John");name=(String)vs.findValue("person.userName");out.print("
使用setValue为userName重新赋值后姓名是:"+name);%>从值栈中获取对象的顺序2-1使用[N]语法获取属性从值栈中第N个元素开始查找N从0开始使用top和[N]语法获取对象top代表栈顶元素name:“name1”age:20name:“name1”age:20Object1Object1name:“name2”sex:“男”name:“name2”sex:“男”Object2Object2name:“name3”sex:“女”age:30name:“name3”sex:“女”age:30Object3Object3获取“name1”---->name获取“20”---->age获取“男”----...