s:checkboxlistタグについて
Struts2のカスタムタグには s:checkbox と類似の s:checkboxlist というのがある
こちらは s:select と同じような使い方になる。
listのソースを固定値ではなく、プログラムから設定する方法で紹介する
tutorial.Media.java
public class Media { String type; String code; public Media( String type, String code ) { this.type = type; this.code = code; } public String getType() { return type; } public String getCode() { return code; } public void setType( String type ) { this.type = type; } public void setCode( String code ) { this.code = code; } }
アクションのプロパティで Mediaの一覧の取得が出来るようにしておく。
: public List<Media> getMediaList() { List<Media> l = new LinkedList<Media>(); l.add( new Media("VHS", "001") ); l.add( new Media("DVD", "002") ); l.add( new Media("DVD-R", "003") ); l.add( new Media("DVD-RW", "004") ); return l; } :
でJSPでは次のように list のソースとして、 getMediaListで返されるlistを指定し、ラベルと値用のプロパティ名を教える
<s:checkboxlist list="getMediaList()" listKey="code" listValue="type" name="media" label="メディア" />
値の受け取りは配列なので次のようなプロパティsetter/getterを用意
String media[]; public void setMedia( String [] media ) { this.media = media; } public String [] getMedia() { return this.media; }
これでOK
ちょっとTIPS:s:checkboxlist は s:checkbox と異なり、どれもチェックされていない場合の特殊な処理は実装されていない