筆者不建議在
action
中使用set
集合屬性,因為
set集合裡元素處於無序狀態,所以
struts 2
不能準確地將請求引數轉換成
set元素。不僅如此,由於
set集合裡元素的無序性,所以
struts 2
也不能準確讀取
set集合裡的元素。
除非set集合裡的元素有乙個標識屬性,這個標識屬性可以唯一地表示集合元素,這樣
struts 2
就可以根據該標識屬性來訪問集合元素了。
程式清單:
public class loginaction extends actionsupport
public set getusers()
//
省略birth
屬性的setter
和getter方法
...//沒有提供
execute()方法,
//將直接使用
actionsupport
的execute()方法
}上面loginaction
的users
屬性的型別是
set,為了讓
struts 2
能將請求引數轉換成
set集合物件,我們提供如下型別轉換器。
程式清單:
public class userconverter extends strutstypeconverter
return result;
}
public string converttostring(map context, object o)
return result + "]";
}else}}
上面的粗體字**實現了將字串陣列轉換成
set集合的轉換處理。除此之外,為了讓
struts 2
能準確地訪問
set集合元素,我們還必須讓
sturts 2
明白set
集合元素的標識屬性,指定
struts 2
根據該標識屬性來訪問
set集合元素。
本應用中
users
屬性所包含的集合元素為
user
類,該類的**如下。
程式清單:
public class user
//
只有當
obj是
user
物件
if (obj != null && obj.getclass() == user.class)
}
return false;
}
//
根據name
屬性來計算
hashcode
public int hashcode()
}
從user
類的粗體字**(重寫了
equals
和hashcode
兩個方法)可以看出,該
user
類的標識屬性是
name
,當兩個
user
的name
相等時即可認為它們相等。
struts 2
允許通過區域性型別轉換檔案來指定
set集合元素的標識屬性,在區域性型別轉換檔案中增加如下一行即可指定
set集合元素的標識屬性。
keyproperty_=
將上面的
替換成集合屬性名,將
替換成集合元素的標識屬性即可。由於本應用的區域性型別轉換檔案還需要指出
set集合元素的型別,所以該區域性型別轉換檔案的**如下。
程式清單: #
指定users
屬性的型別轉換器是
lee.userconverter
users=lee.userconverter#指定
users
集合屬性裡集合元素的索引屬性是
name
keyproperty_users=name
一旦指定了集合元素的索引屬性後,
struts 2
就可以通過該索引屬性來訪問
set集合元素了。下面是在
jsp頁面中通過索引屬性直接訪問
set元素的**片段。
使用者crazyit.org
的使用者名為:
使用者crazyit.org
的密碼為:
使用者b的使用者名為:
使用者b的密碼為:
生日為:
通過**可以看出,直接訪問
set元素的方式是:
('')
——該方式訪問的是索引屬性為指定值的集合元素。上面**將會輸出
set屬性裡的兩個
user
例項的name
和pass
,前提是這兩個
user
例項的標識屬性(
name
屬性)值分別為
scott
和yeeku。
注意:上面訪問
set元素用的是圓括號,而不是方括號。但對於陣列、
list
和map
屬性,則通過方括號來訪問指定集合元素。
處理Set集合
筆者不建議在 action 中使用set 集合屬性,因為 set集合裡元素處於無序狀態,所以 struts 2 不能準確地將請求引數轉換成 set元素。不僅如此,由於 set集合裡元素的無序性,所以 struts 2 也不能準確讀取 set集合裡的元素。除非set集合裡的元素有乙個標識屬性,這個標識...
處理集合 建立Set
使用內建建構函式建立set,如果不傳入任何引數,將建立乙個空set。可以傳入字串 new set kuma hattori yagyu hattori set成員的值都是唯一的,最重要的作用是避免儲存多個相同的物件。在本例子中,檢視新增兩次 hattori 但是只成功新增一次。set具有多個可訪問的...
js的set集合的處理
最根本的區別是陣列是乙個索引集合,這說明陣列中的資料值按索引排序。const arr a,b,c,d console.log arr.indexof a result 0 console.log arr.indexof c result 2 相比之下,set是乙個鍵的集合。set不使用索引,而是使用...