http://blog.csdn.net/sd0902/article/details/8393099css
1.#符號的用途通常有三種:
1)訪問非根對象屬性,例如示例中的#session.msg表達式,因爲Struts 2中值棧被視爲根對象,因此訪問其餘非根對象時,須要加#前綴。實際上,#至關於ActionContext.getContext();;#session.msg表達式至關於ActionContext.getContext().getSession(). getAttribute(」msg」) 。
2)用於過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。
html
3)用來構造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。java
名稱 |
做用 | 例子 |
parameters | 包含當前HTTP請求參數的Map | #parameters.id[0]做用至關於 |
request | 包含當前HttpServletRequest的屬性(attribute)的Map | #request.userName至關於jquery request.getAttribute("userName")數組 |
session | 包含當前HttpSession的屬性(attribute)的Map | #session.userName至關於session session.getAttribute("userName")app |
application | 包含當前應用的ServletContext的屬性(attribute)的Map | #application.userName至關於ide application.getAttribute("userName")this |
attr | 用於按request > session > application順序訪問其屬性(attribute) |
獲取Paraments對象的屬性:<s:property value="#parameters.username"/> spa
用%{}能夠取出存在值堆棧中的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:能夠上下移動的列表框