struts--OGNL

來源:互聯網
上載者:User

標籤:

參考文章: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運算式


  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:可以上下移動的列表框

struts--OGNL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.