1.在Action中有一個(gè)static 方法,可以直接在頁面中調(diào)用,通過@包名。類名@方法名
獲取public static final 屬性名一樣
<s:property value=”@com.test.ognl.LoginAction@get()”/>
2.在Action中所有屬性都會(huì)放在ValueStack中,可以不用任何符號(hào)直接訪問
<s:property value=”Action中屬性名”/>
3.如果屬性為一個(gè)bean對(duì)象,可以在頁面中直接訪問bean的屬性和方法
4.ValueStack:每一個(gè)Action(包含屬性和方法)實(shí)例對(duì)象中都會(huì)擁有一個(gè)ValueStack對(duì)象;與Action的生命周期相同,在內(nèi)存中的位置與parameters,reqeust,session.application 一樣,只是ValueStack不用使#獲取對(duì)象.一次請(qǐng)求(如Action(chain)共享一個(gè)值棧,ation都在valueStack中,也可直接往ValueStack中放一個(gè)對(duì)象
ActionContext.getContext().getValueStack().put(Obj)
5.獲取數(shù)組和List(為Action中一個(gè)屬性)中某一個(gè)值:
<s:property value=”list[0]”/>
6.獲取Set(Action中一個(gè)屬性):
Set testSet = new HashSet();//Set中元素是沒有順序的,所以不能用下標(biāo)取
<s:property value=”testSet”/>
7.獲取Map(Action中的一個(gè)屬性):
Map map = new HashMap();
獲取所有:<s:property value=”map”/>
獲取某一個(gè)值:<s:property value=”map[‘m1’]”/>
8.集合類中都有一些偽屬性:
如:Map,List,Set 中有的size, isEmpty
List 中獨(dú)有的 iterator 能夠返回一個(gè)迭代器
Map 中獲取所有的鍵,所有的值: keys ,values
Iterator中next ,hasNext
Enumeration
9.JDK中類默認(rèn)已經(jīng)重寫了toString()方法,而我們自定義的類中如果不重寫這個(gè)方法,只能調(diào)用Object中的toString()方法,打印出getClass().getName() + '@' + Integer.toHexString(hashCode()),如下:com.test.vo.Student@00fcb
如果不想這么顯示,則需要在Student類中得寫toString()方法:
Public String toString(){ return “aaa”;}
10.我們利用toString()方法可以打印出所有對(duì)象,但有時(shí)候我們不想獲取所有屬性,只獲取List中對(duì)象的部分屬性,可以利用投影技術(shù)實(shí)現(xiàn):
如下 獲取userName屬性值(即:從大集合中得到一個(gè)小集合):
<s:property value=”student.{userName}”/>
如果再想取出投影中某一個(gè)值:則<s:property value=”student.{student}[0]”/>
11.利用選擇技術(shù)獲取List中滿足某些條件的對(duì)象 #
<s:property value=”student.{?#this.grade>=60}”/>
<s:property value=”student.{^#this.grade>=60}.{userName}”/>
<s:property value=”student.{#this.grade>=60}.{userName}[0]”/>
? 取出所有對(duì)象 返回字符串
^ 取出第一個(gè)對(duì)象,返回一個(gè)聯(lián)表,可以取size
$ 取出最后一個(gè)對(duì)象,
12. #的作用:
內(nèi)存中五大對(duì)象 parameters,request ,session,application ,attr中獲取對(duì)象,要用#
Parameters: <s:property value=” #parameters.userName”/>
如果要使用URL傳值,則<result type=”redirect”>/test.jsp</result>
13. %的作用:
%可以取出存放在ValueStack中的Action對(duì)象,并直接調(diào)用他的方法
如果我們的Action繼承ActionSupport類,則可以%{getText(‘key’)}用這種方式取出國(guó)際化信息
14. $的作用:${}
$可以在國(guó)際化資源文件中引用OGNL表達(dá)式
$也可以在struts.xml配置文件中引用表達(dá)式
15.struts2中從一個(gè)Action1跳到另一個(gè)Action2(使用chain),則跳轉(zhuǎn)后先從Action2的ValueStack中查找值,再從Action1 ValueStack中查找值
服務(wù)器端跳轉(zhuǎn):
<action name=”testv1” class=”com.test.TestV1”>
<result type=”chain”>
<param name=”actionName”>testv2</param>
</result>
</action>
客戶端跳轉(zhuǎn):
<action name=”testv2” class=”com.test.TestV2”>
<result type=”redirectAction”>
<param name=”actionName”>testv2</param>
</result>
</action>