一、 包的通配符
<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棧屬性:
加#