通配符+值棧


一、     包的通配符

    <package name="default" extends="struts-default">

       <action name="*_*" class="org.simpleit.app.{1}" mathod="{2}">

           <result>/WEB-INF/jsp/{1}.jsp</result>

       </action>

    </package>

二、關於值棧:

1). helloWorld , ${productName} 讀取 productName , 實際上該屬性並不在 request 等域對象中, 而是從值棧中獲取的.

2). ValueStack:

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

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

      > Map : 實際上是 OgnlContext 類型, 是個 Map, 也是對 ActionContext 的一個引用. 裏邊保存着各種 Map:

requestMap,sessionMap, applicationMap, parametersMap, attr

      > 對象棧: 實際上是CompoundRoot 類型, 是一個使用 ArrayList 定義的棧. 裏邊保存各種和當前 Action 實例相關的對象.是一個數據結構意義的棧.

三、 Struts2 利用 s:property 標籤和 OGNL 表達式來讀取值棧中的屬性值

1). 值棧中的屬性值:

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

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

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

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

object.propertyName

object['propertyName']

object["propertyName"]

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

[0].message

> [n] 的含義是從第N 個開始搜索, 而不是隻搜索第N 個對象

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

> 結合 s:property 標籤:

<s:propertyvalue="[0].message" />0時等同於

<s:propertyvalue="message" />

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

>對象棧屬性:

顯示部分

ProductName:^<%=request.getAttribute("productName") %>

ProductDesc:${ productName }

ProductPrice:<s:property value="[0]. productName "/>

ProductPrice:<s:property value=" productName "/>

以上均爲值棧中的的一個對象。若想讀取第二個則用value="[1].productPrice"

>Map棧屬性:

#

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章