List、listkey、listValue属性


List、listKey、listValueプロパティは、radio、ombobox、select、checklist、doubleselectなどの標答にとって非常に重要です.これらのラベルのオプションをプログラマーがより効率的に管理し、取得するのに役立つからです.
注意:select要素ではvalueプロパティはオプションです.このプロパティが指定されていない場合、オプションが選択されている場合、そのオプションの行ラベルはselect要素の値としてサーバに送信されます.理論的にはradio要素のvalue属性もオプションです.ただし、valueプロパティが指定されていない場合、radioボタンが選択されている場合の値は、対応するradio要素のlabelプロパティ値ではなく「on」になります.
listプロパティは必須であり、他の2つのプロパティはオプションです.String、配列、javaをutil.Enumeration、java.util.Iterator、java.util.Mapまたはjava.util.Collectionはlistプロパティに割り当てられます.この値オブジェクトは、1つのアクションオブジェクトに配置することも、現在のセッションオブジェクトまたは現在のサーブレットContextオブジェクトに配置することもできます.
注意:listプロパティオブジェクトにダイナミックに割り当てるオプションがない場合は、空の値(null)を返すのではなく、空の配列/Collection/Mapを返す必要があります.
1、Stringを割り当てる
配列をString表現に割り当てることができます.
<s:select list="{'Atlanta','Chicago','Detroit'}"/>

このselectラベルは
<select>
    <option value="Atlanta">Atlanta</option>
    <option value="Chicago">Chicago</option>
    <option value="Detroit">Detroit</option>
</select>




各オプションの値の行標は同じ文字要素を使用していることに注意してください.
ほとんどのStrutsアプリケーションでは、オプションの値と行ラベルが同じである必要があります.これは、次の構文を使用する必要があります.
#{'value-1':'label-1','value-2':'label-2','value-3':'label-3','value-4':'label-4'value-5':'label-5'}

Map型の文法として書きますが、特に開始位置に井戸番号「#」を付ける必要があることに注意してください.
例:
<s:select name ='select1' list="#{'1':'A','2':'B','3':'C'}"/>

として表現
<select>
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
</select>

2、一つのMapを割り当てる
各オプションの値を行ラベルと異なるようにするには、オプションのソースとしてMapを使用します.Mapをオプションのソースとして使用するのは簡単です.オプションの値をMapのkey、オプションの行をMapのvalueと表記すればいいです.
Map<Integer,String> cities = new HashMap<Integer,String> ();
cities.put("1","A");
cities.put("2,"B");
cities.put("3","C"");
cities.put("4","D);

citiesがアクション属性である場合、list属性に次のように割り当てることができます.
<s:select list="cities"/>

または、citiesがアプリケーションのプロパティである場合は、次のコードを使用します.
<s:select list="#application.cities"/> 

3、Collectionを1つ割り当てる
オプションのソースとしてオブジェクト配列またはオブジェクトCollectionを使用することもできます.この場合、list、listKey、listValue属性が必要になります.具体的には、その配列やCollectionをlist属性に割り当て、オプション値に与えるオブジェクト属性をlistKey属性に割り当て、オプション行標に与えるオブジェクト属性をlistValue属性に割り当てます.
public class City {

	private Integer id;
	
	private String name;

	public Integer getId() {
		return id;
	}

	public City(Integer id, String name) {
		this.id = id;
		this.name = name;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

コレクションのコード:
		Collection<City> c = new ArrayList<City>();
		c.add(new City(1,"A"));
		c.add(new City(2,"B"));
		c.add(new City(3,"C"));
		c.add(new City(4,"D"));

ページコード:
<s:select list="cities" listKey="id" listValue="name"/>

4、ページでMap型データをカスタマイズする:
<s:iterator value="#{'10':'ff'}">
	<s:checkbox key="value" value='key'/>
</s:iterator>

この例では、keyとvalueの2つの参照名を使用して#{'10':'ff'}を参照します(書き方:#{key:value}).