OGNL

參考文章:http://blog.csdn.net/tjcyjd/article/details/6850203

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

OGNL中%的使用

用%{}能夠取出存在值堆棧中的Action對象,直接調用它的方法.

例如你的Action若是繼承了ActionSupport .那麼在頁面標籤中,用%{getText('key')}的方式能夠拿出國際化信息.

 

OGNL中$的使用

「$」有兩個主要的用途

l         用於在國際化資源文件中,引用OGNL表達式

l         在Struts 2配置文件中,引用OGNL表達式


  1. 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:能夠上下移動的列表框

相關文章
相關標籤/搜索