值棧(Structs2),structs2

來源:互聯網
上載者:User

值棧(Structs2),structs2

1. 關於值棧:

1). 登陸 時, ${userName} 讀取 userName 值, 實際上該屬性並不在 request 等域對象中, 而是從值棧中擷取的.

2). ValueStack:

I. 可以從 ActionContext 中擷取值棧對象

//1. 擷取值棧
ValueStack valueStack = ActionContext.getContext().getValueStack();
//2. 建立 Test 對象, 並為其屬性賦值
Test object = new Test();
object.setUserName("abc");
object.setUserPsw("123");

//3. 把 Test 對象壓入到值棧的棧頂!
valueStack.push(object);


II. 值棧分為兩個邏輯部分

> Map 棧: 實際上是 OgnlContext 類型, 是個 Map, 也是對 ActionContext 的一個引用. 裡邊儲存著各種 Map:
requestMap, sessionMap, applicationMap, parametersMap, attr

> 對象棧: 實際上是 CompoundRoot 類型, 是一個使用 ArrayList 定義的棧. 裡邊儲存各種和當前 Action 執行個體相關的對象.
是一個資料結構意義的棧.

2. Struts2 利用 s:property 標籤和 OGNL 運算式來讀取值棧中的屬性值

1). 值棧中的屬性值:

> 對於對象棧: 對象棧中某一個對象的屬性值

> Map 棧: request, session, application 的一個屬性值 或 一個請求參數的值.

2). 讀取對象棧中對象的屬性:

> 若想訪問 Object Stack 裡的某個對象的屬性. 可以使用以下幾種形式之一:

object.propertyName ; object['propertyName'] ; object["propertyName"]

> ObjectStack 裡的對象可以通過一個從零開始的下標來引用. ObjectStack 裡的棧頂對象可以用 [0] 來引用,
它下面的那個對象可以用 [1] 引用.

[0].message

> [n] 的含義是從第 n 個開始搜尋, 而不是只搜尋第 n 個對象

> 若從棧頂對象開始搜尋, 則可以省略下標部分: message

> 結合 s:property 標籤: <s:property value="[0].message" /> <s:property value="message" />

3). 預設情況下, Action 對象會被 Struts2 自動的放到值棧的棧頂.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.