コンポーネントタグでチェックボックスを作成する方法を説明します。フォームや入力項目を作成する基本的な方法については、“G.1.2 フォームを作成したい”や“G.1.3 入力項目を作成したい”を参照してください。
主に以下の3通りの方法があります。
目的 | 作成方法 |
---|---|
uji:checkBoxタグを使用します。 | |
uji:buttonListタグで作成します。複数の選択肢のチェックボックスをまとめてuji:buttonListタグ1個で作成できます。 | |
チェックボックスにする列を、uji:tableViewタグ、uji:treeViewタグのdataCellTypeアトリビュートで指定します。 |
チェックボックスを個別に作成する
uji:checkBoxタグでチェックボックスを作成する方法は以下のとおりです。
uji:checkBoxタグに対応付けるプロパティをデータBeanに作成します。プロパティの型としては、Boolean, boolean, String を使用します。チェックボックスの色やサイズを動的に変更したい場合は項目クラスを使用することもできます。項目クラスの使用方法は“G.1.9 入力項目やボタンの色、サイズ、フォントを指定したい”を参照してください。以降はBoolean, boolean, Stringの場合を説明します。
JSPにuji:checkBoxタグを記述します。1 で作成したプロパティを、uji:checkBoxタグのbean, propertyアトリビュートで指定します。beanでデータBeanの名前を指定し、propertyでそのデータBeanのプロパティ名を指定します。データBeanの名前とは、DispatchContextクラスのsetResponseBeanメソッドでデータBeanに割り当てた名前です。
データBeanの記述例
import com.fujitsu.uji.DataBean; public class MyDataBean extends DataBean { protected boolean accepted = false; .... public boolean isAccepted() { return accepted; } public void setAccepted(boolean accepted) { this.accepted = accepted; } .... }
ここでは、boolean型のプロパティacceptedをデータBeanに作成しています。
JSPの記述例
<uji:checkBox bean="body" property="accepted" />
bean, propertyアトリビュートで、accepted プロパティを指定します。
フォームが送信されると、チェック状態がプロパティに反映されます。チェックされている場合はプロパティの値がtrue (booleanの場合)、Boolean.TRUE (Booleanの場合), "true" (Stringの場合)となります。チェックされていない場合は、false (booleanの場合)、Boolean.FALSE (Booleanの場合), "false" (Stringの場合)となります。
選択肢群から項目を選んでチェックするための一連のチェックボックスをまとめて作成する
uji:buttonListタグを使うと、選択肢群から項目を選ぶためのチェックボックスが容易に作成できます。
<uji:buttonList bean="body" property="button" multipleMode="true" columns="3" />
この記述によるチェックボックスの表示例は以下のようになります。
uji:buttonListタグは以下のように使用します。
uji:buttonListタグに対応づけるプロパティをデータBeanに作成します。プロパティの型はuji:buttonList用の項目クラスである必要があります。項目クラスとは、入力や表示を行なうデータが格納されるクラスです。uji:buttonListでは、com.fujitsu.uji.compo.ButtonListクラスを項目クラスとして使用します。
表示する選択肢のラベルは項目クラスに格納します。ButtonListクラスの場合は、add, setメソッドで選択肢を追加、設定します。
JSPにuji:buttonListタグを記述します。1 で作成したプロパティを、uji:buttonListタグのbean, propertyアトリビュートで指定します。beanでデータBeanの名前を指定し、propertyでそのデータBeanのプロパティ名を指定します。データBeanの名前とは、DispatchContextクラスのsetResponseBeanメソッドでデータBeanに割り当てた名前です。
uji:buttonListタグのmultipleModeアトリビュートにtrueを指定します。
データBeanの記述例
import com.fujitsu.uji.DataBean; import com.fujitsu.uji.compo.ButtonList; public class MyDataBean extends DataBean { protected ButtonList button = new ButtonList(); .... public ButtonList getButton() { return button; } .... }
ここでは、ButtonList型のプロパティbuttonをデータBeanに作成しています。
選択肢のラベルをビジネスクラスのメソッドで指定するための記述例
public void startup(DispatchContext context) {
String[] ivalue={
"スポーツ","音楽","ドライブ","読書",
"映画鑑賞","園芸","旅行","ギャンブル"
};
MyDataBean dataBean = new MyDataBean();
ButtonList button = dataBean.getButton();
for (int i = 0; i < ivalue.length; i++) button.add(ivalue[i]);
....
context.setResponseBean("body",dataBean);
}
ButtonListクラスのaddメソッドで選択肢を追加します。
JSPの記述例
<uji:buttonList bean="body" property="button" multipleMode="true" columns="3" />
bean, propertyアトリビュートで、buttonプロパティを指定します。columnsアトリビュートには、1行に何個のチェックボックスを表示するかを指定します。
フォームが送信されたあと、どの選択肢がチェックされたのかを項目クラスからgetSelectedIndexesメソッドで取得できます。このメソッドはチェックされている選択肢のインデックスを配列で返します。
チェックされた選択肢のインデックスを取得する処理の記述例
public void update(DispatchContext context, MyDataBean dataBean) {
ButtonList button = dataBean.getButton();
int[] indexes = button.getSelectedIndexes();
....
}
ポイント
com.fujitsu.uji.compo.ButtonListModelインタフェースを実装したクラスを作成し、項目クラスとして使用することもできます。
uji:tableViewタグ、uji:treeViewタグで作成した表の特定の列をチェックボックスにする
uji:tableView、uji:treeViewタグで表を作成している場合、dataCellTypeアトリビュートで各列の表示形式をセミコロンで区切って指定できます。チェックボックスにする列には表示形式として"check"を指定します。
<uji:tableView bean="body" property="table" dataCellType="data;data;check" />
この記述では、3列目がチェックボックスで表示されます。
チェックボックスに対応するセルの値はBooleanクラスで表します。フォームが送信されると、チェックされたセルの値にはBoolean.TRUEが、チェックされていないセルの値にはBoolean.FALSEがセットされます。 画面表示時は、セルの値に従ってチェック状態が決定されます。
関連項目
UJIタグリファレンス
APIリファレンスのButtonListクラス