1.在Action中有一个static 方法,可以直接在页面中调用,通过@包名。类名@方法名
获取public static final 属性名一样
<s:property value=”@com.test.ognl.LoginAction@get()”/>
2.在Action中所有属性都会放在ValueStack中,可以不用任何符号直接访问
<s:property value=”Action中属性名”/>
3.如果属性为一个bean对象,可以在页面中直接访问bean的属性和方法
4.ValueStack:每一个Action(包含属性和方法)实例对象中都会拥有一个ValueStack对象;与Action的生命周期相同,在内存中的位置与parameters,reqeust,session.application 一样,只是ValueStack不用使#获取对象.一次请求(如Action(chain)共享一个值栈,ation都在valueStack中,也可直接往ValueStack中放一个对象
ActionContext.getContext().getValueStack().put(Obj)
5.获取数组和List(为Action中一个属性)中某一个值:
<s:property value=”list[0]”/>
6.获取Set(Action中一个属性):
Set testSet = new HashSet();//Set中元素是没有顺序的,所以不能用下标取
<s:property value=”testSet”/>
7.获取Map(Action中的一个属性):
Map map = new HashMap();
获取所有:<s:property value=”map”/>
获取某一个值:<s:property value=”map[‘m1’]”/>
8.集合类中都有一些伪属性:
如:Map,List,Set 中有的size, isEmpty
List 中独有的 iterator 能够返回一个迭代器
Map 中获取所有的键,所有的值: keys ,values
Iterator中next ,hasNext
Enumeration
9.JDK中类默认已经重写了toString()方法,而我们自定义的类中如果不重写这个方法,只能调用Object中的toString()方法,打印出getClass().getName() + '@' + Integer.toHexString(hashCode()),如下:com.test.vo.Student@00fcb
如果不想这么显示,则需要在Student类中得写toString()方法:
Public String toString(){ return “aaa”;}
10.我们利用toString()方法可以打印出所有对象,但有时候我们不想获取所有属性,只获取List中对象的部分属性,可以利用投影技术实现:
如下 获取userName属性值(即:从大集合中得到一个小集合):
<s:property value=”student.{userName}”/>
如果再想取出投影中某一个值:则<s:property value=”student.{student}[0]”/>
11.利用选择技术获取List中满足某些条件的对象 #
<s:property value=”student.{?#this.grade>=60}”/>
<s:property value=”student.{^#this.grade>=60}.{userName}”/>
<s:property value=”student.{#this.grade>=60}.{userName}[0]”/>
? 取出所有对象 返回字符串
^ 取出第一个对象,返回一个联表,可以取size
$ 取出最后一个对象,
12. #的作用:
内存中五大对象 parameters,request ,session,application ,attr中获取对象,要用#
Parameters: <s:property value=” #parameters.userName”/>
如果要使用URL传值,则<result type=”redirect”>/test.jsp</result>
13. %的作用:
%可以取出存放在ValueStack中的Action对象,并直接调用他的方法
如果我们的Action继承ActionSupport类,则可以%{getText(‘key’)}用这种方式取出国际化信息
14. $的作用:${}
$可以在国际化资源文件中引用OGNL表达式
$也可以在struts.xml配置文件中引用表达式
15.struts2中从一个Action1跳到另一个Action2(使用chain),则跳转后先从Action2的ValueStack中查找值,再从Action1 ValueStack中查找值
服务器端跳转:
<action name=”testv1” class=”com.test.TestV1”>
<result type=”chain”>
<param name=”actionName”>testv2</param>
</result>
</action>
客户端跳转:
<action name=”testv2” class=”com.test.TestV2”>
<result type=”redirectAction”>
<param name=”actionName”>testv2</param>
</result>
</action>
posted on 2009-07-14 16:38
长春语林科技 阅读(694)
评论(0) 编辑 收藏 所属分类:
struts2