1. 程式人生 > >s:property 標籤——value屬性使用事項

s:property 標籤——value屬性使用事項

簡單介紹
1)涉及問題:取值時什麼時候該加#,什麼時候不加?


2)介紹
Struts2中的property標籤
<s:property value="...."/>
用於獲取ognlcontext物件中的屬性值,亦稱為資料標籤。其中value的值為具體的屬性名稱。


獲取值時,一般有兩種情況:
1)在獲取request/session/application/attr/parameters這五個範圍時,需要明確指定範圍,比如
<s:property value="#request.屬性名" />
範圍前面需要帶#號才能正確獲取屬性值。


2)如果取ValueStack中的值時,是不需要帶#的,可以直接取。
比如Action例項的屬性值是儲存在ValueStack中的,所以取Action中的屬性是不需要帶#號的。
然而,在使用<s:iterator id="it" value="attrName">時,後使用it去取物件屬性時,是需要加#號的。

注:<s:property>要正確獲取Action中的屬性值,必須在在action中設定了該屬性的setter/getter方法,否則它不會被攔截器處理。

value引數值介紹
value引數的型別是object,可以理解為這個預設是會解析成ognl表示式的。

比如需要輸入一個字串string
<s:property value="'string'">
注意,在value裡面的字串string外面加了單引號,這樣不會將string解析成ognl表示式了。.

故value的值解析成OGNL表示式,在此表示式內,有些物件的值的使用與java程式碼相似,但不相同,以下取幾個例子

1)value為String物件時,一些常用的String子函式使用
string.length() //字串長度  
string.substring(0,130) //按起末位取子串
2)value為List時
在獲取List的大小時,可以使用其變數的size值,比如取List物件group的陣列長度
<s:property value="groups.size" />
3)value內還可以寫表示式,比如輸出一個整型變數page的+1值
<s:property value="page+1" />

原文地址:http://blog.csdn.net/wenlele/article/details/6843067