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" />