struts2.0的list、listKey和listValue屬性
list、listKey和listValue屬性對(duì)radio、combobox、select、checklist、doubleselect等標(biāo)簽來(lái)說(shuō)非常重要。
我們可以用一組radio標(biāo)簽來(lái)提供一組選項(xiàng)。例如,下面這些HTML輸入標(biāo)簽將呈現(xiàn)為如圖5-5所示的一組單選按鈕。
正如你看到的那樣,這組單選按鈕由一組值(1、2、3)和一組行標(biāo)(Atlanta、Chicago、Detroit)構(gòu)成,它們之間的鍵/值對(duì)應(yīng)情況如下所示:
select元素也可以用來(lái)提供一組選項(xiàng)。下面的select元素(如圖5-6所示)能夠提供與剛才那組單選按鈕一樣的選項(xiàng)。
注意 在select元素里,value屬性是可選的。如果沒(méi)有給出這個(gè)屬性,在某個(gè)選項(xiàng)被選中時(shí),該選項(xiàng)的行標(biāo)將作為select元素的值被發(fā)送到服務(wù)器。從理論上講,radio元素的value屬性也是可選的。可是,如果不給出value屬性,單選按鈕被選中時(shí)的值將是“on”而不是相應(yīng)的radio元素的 label屬性值,這無(wú)疑會(huì)讓同一個(gè)表單里的多個(gè)radio元素難以區(qū)別。因此,在使用radio元素的時(shí)候往往必須給出它們的value屬性。
本節(jié)解釋了list、listKey和listValue屬性在radio、select 和其他用來(lái)提供一組選項(xiàng)的標(biāo)簽里的使用方法。在使用這些標(biāo)簽時(shí),你們需要提供一些鍵/值對(duì)作為那些選項(xiàng)的來(lái)源。在這3個(gè)屬性當(dāng)中,list屬性是必不可少的,另外兩個(gè)屬性是可選的。我們可以把一個(gè)String、一個(gè)數(shù)組、一個(gè)java.util.Enumeration、一個(gè) java.util.Iterator、一個(gè)java.util.Map或一個(gè)Collection賦值給list屬性,這個(gè)值對(duì)象既可以放在一個(gè)動(dòng)作對(duì)象里,也可以放在當(dāng)前會(huì)話對(duì)象或當(dāng)前ServletContext對(duì)象里。
注意 如果你動(dòng)態(tài)賦給list屬性的對(duì)象沒(méi)有任何選項(xiàng),你必須返回一個(gè)空的數(shù)組/Collection/Map,而不是返回一個(gè)空值(null)。
5.11.1 賦值一個(gè)String
你可以將一個(gè)數(shù)組賦值為String表示形式。例如,下面把一個(gè)字符串賦值給select標(biāo)簽:
這個(gè)select標(biāo)簽將呈現(xiàn)為:
請(qǐng)注意,每個(gè)選項(xiàng)的值和行標(biāo)使用的是同一個(gè)字符串元素。
在絕大多數(shù)Struts應(yīng)用程序里,選項(xiàng)的值和行標(biāo)應(yīng)該不同,這需要使用如下所示的語(yǔ)法:
例如,下面這個(gè)select標(biāo)簽
將呈現(xiàn)為:
5.11.2 賦值一個(gè)Map
如果你想讓各個(gè)選項(xiàng)的值與它的行標(biāo)不同,你可以使用一個(gè)Map作為選項(xiàng)的來(lái)源。使用Map作為選項(xiàng)的來(lái)源很簡(jiǎn)單:把選項(xiàng)的值用作Map的鍵、把選項(xiàng)的行標(biāo)用作Map的鍵值即可。例如,以下代碼將創(chuàng)建一個(gè)名為cities的Map,它包含3個(gè)城市的名字:
如果cities是一個(gè)動(dòng)作屬性,你可以像下面這樣把它賦值給list屬性:
或者,如果cities是一個(gè)應(yīng)用程序?qū)傩裕憧梢允褂萌缦滤镜拇a:
5.11.3 賦值一個(gè)Collection或一個(gè)對(duì)象數(shù)組
你還可以使用一個(gè)對(duì)象數(shù)組或一個(gè)對(duì)象Collection來(lái)作為選項(xiàng)的來(lái)源。此時(shí),你將需要用到list、listKey和listValue屬性。具體做法是:把那個(gè)數(shù)組或Collection賦值給list屬性,把用來(lái)提供選項(xiàng)值的對(duì)象屬性賦值給listKey屬性,把用來(lái)提供選項(xiàng)行標(biāo)的對(duì)象屬性賦值給listValue屬性。
例如,假設(shè)某個(gè)動(dòng)作對(duì)象的getCities方法將返回一個(gè)以City對(duì)象為元素的List,而City對(duì)象有一個(gè)id和一個(gè)name屬性,你就可以用如下所示的代碼把這個(gè)List賦值給一個(gè)select標(biāo)簽:
posted on 2011-11-09 09:46 計(jì)明敏 閱讀(1648) 評(píng)論(0) 編輯 收藏 所屬分類: struts