標籤:
參考文章:http://blog.csdn.net/tjcyjd/article/details/6850203
http://blog.csdn.net/sd0902/article/details/8393099
1.#符號的用途一般有三種:
1)訪問非根對象屬性,例如樣本中的#session.msg運算式,由於Struts 2中值棧被視為根對象,所以訪問其他非根對象時,需要加#首碼。實際上,#相當於ActionContext.getContext();;#session.msg運算式相當於ActionContext.getContext().getSession(). getAttribute(”msg”) 。
2)用於過濾和投影(projecting)集合,如樣本中的persons.{?#this.age>20}。
3)用來構造Map,例如樣本中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。
名稱
|
作用 |
例子 |
| parameters |
包含當前HTTP請求參數的Map |
#parameters.id[0]作用相當於 |
| request |
包含當前HttpServletRequest的屬性(attribute)的Map |
#request.userName相當於 request.getAttribute("userName") |
| session |
包含當前HttpSession的屬性(attribute)的Map |
#session.userName相當於 session.getAttribute("userName") |
| application |
包含當前應用的ServletContext的屬性(attribute)的Map |
#application.userName相當於 application.getAttribute("userName") |
| attr |
用於按request > session > application順序訪問其屬性(attribute) |
|
擷取Paraments對象的屬性:<s:property value="#parameters.username"/>
OGNL中%的使用
用%{}可以取出存在值堆棧中的Action對象,直接調用它的方法.
例如你的Action如果繼承了ActionSupport .那麼在頁面標籤中,用%{getText(‘key‘)}的方式可以拿出國際化資訊.
OGNL中$的使用
“$”有兩個主要的用途
l 用於在國際化資源檔中,引用OGNL運算式
l 在Struts 2設定檔中,引用OGNL運算式
struts控制標籤
1>if/elseif/else用來進行分支控制
<s:if test="運算式">標籤體</s:if>
2>append:將多個集合對象拼接成一個新的集合
<s:append var="newList"> <s:param value="%{myList1}"></s:param> <s:param value="%{myList2}"></s:param> <s:param value="%{myList3}"></s:param>//數組取出方式:%{list} </s:append> <s:iterator value="%{#newList}">//迭代數組取出:%{#list} <s:property/> </s:iterator>
3>generator:用來將指定字串按照制定分隔字元分割成多個子串
屬性:separator--指定字串的分隔字元
val:制定被解析的字串
var:將產生的Iterator設定為pageContext範圍的屬性
<s:generator separator="," val="%{‘aaa,bbb,ccc,ddd,ee‘}"> <s:iterator> <s:property/> </s:iterator></s:generator>
4>iterator:對集合資料進行迭代,根據集合條件遍曆數組和集合類中的資料
屬性:status--迭代過程中的狀態(status.first:第一個元素;status.last:最後一個元素;status.even:索引是否為偶數;status.odd:索引是否為奇數;status.index:當前索引值)
step--每次迭代索引增加的值
value--迭代的數組或者集合對象
var--將產生的iterator設定為page範圍的屬性
<table border="1" cellpadding="0" cellspacing="0"> <s:iterator var="name" value="{‘java‘,‘css‘,‘html‘,‘jquery‘}" status="st"> <s:if test="st.odd">status的狀態資訊 <tr style="background-color: red;"> <td><s:property value="name"/></td> </tr> </s:if> <s:else> <tr style="background-color: green"> <td><s:property value="name"/></td> </tr> </s:else> </s:iterator> </table>
5>sort:對指定集合進行排序,但是必須要指定一個Comparator,使其實現Java.util.Comparator介面
屬性:source--指定的排序集合
var--將產生的iterator設定為page範圍的屬性
Comparator--指定進行排序執行個體
<!-- sort介面 --> <s:bean var="myComparator" name="com.action.ListComparator"></s:bean> <s:sort comparator="#myComparator" source="{‘aaa‘,‘bb‘,‘ab‘}" > <s:iterator> <s:property/> </s:iterator> </s:sort>
6>.subset:取出指定集合的子集
屬性:source--指定源集合
decider--指定一個decider對象,該對象決定是否選擇該元素(implements Decider)
<!-- subset標籤 --> <s:bean name="com.action.EvenDecider" var="mydecider"></s:bean> <s:subset source="{1,2,3,4}" decider="#mydecider"> <s:iterator> <s:property/> </s:iterator> </s:subset>
2.struts資料標籤
1>.a標籤(用於構造HTML頁面中的超連結)
<s:a action/href/namespace/id/method></s:a>
2><s:action></s:action>從JSP頁面來直接調用action,設定executeResult屬性為true的話,可以直接得到action返回的視圖頁面
3><s:bean></s:bean>用於建立一個JavaBean執行個體
與param標籤結合時可以傳入指定屬性值,因此指定JavaBean必須提供get和set方法
<s:bean name="com.model.User" var="user"> <s:param name="name" value="‘tom‘"></s:param> <s:param name="age" value="20"></s:param> <s:if test="#user.age>20"> <s:property/> </s:if> </s:bean>
4>.<s:date></date>標籤用於輸出日期
5><s:debug></s:debug>用於開發人員在開發的過程中偵錯工具時輸出更多的調試資訊
6>.<s:include></s:include>標籤用於將一個JSP頁麵包含到該頁面中
7><s:param></param>標籤主要用於為其他標籤提供參數
8><s:property></s:property>輸出valuestack中對象的屬性值
9><s:set></set>將某個值放入指定範圍之內 如session request等
<s:set var="personName" value="person.name"></s:set> <s:property value="#personName"/>
10><s:text></s:text>輸出國際化的資源檔
<s:textfield name="lastName" label="getText(‘person.lastName‘)"></s:textfield>
3.struts表單標籤:
form:產生對應form標籤
submit:產生提交按鈕
checkbox:建立複選框
checkboxlist:一次性建立多個複選框
combox:建立文字框和下拉式清單方塊的組合
doubleselect:建立兩個相關聯的列表框
file:用於建立一個檔案選擇框
label:用於產生HTML中的<label>標籤
select:建立一個下拉式清單方塊
outgroup:產生一個下拉式清單方塊選項組
<!-- 下拉式清單方塊選項組 --> <s:select label="my select" name="mySelect" list="%{#{‘SUPERMAN‘:‘Superman‘;‘GOOD‘:good}}"> <s:optgroup label="Adult" list="%{#{‘Test‘:test;‘BAD‘:bad}" /> <s:optgroup label="China" list="%{#{‘BUBEI‘:hubei;‘BEIJING‘:beijing}" /> </s:select>
password:建立一個密碼輸入框
radio:建立多個單選框
<!-- 建立多個單選框 --> <s:radio label="單選框" name="gender" list="#{‘male‘:‘男‘;‘female‘:‘女‘}" listKey="key" listValue="value"></s:radio> <!-- 擷取方式: --> <s:property value="gender"/>
reset:重設按鈕
textarea/textfield:建立文字框
updownload:可以上下移動的列表框
struts--OGNL