JSF 2チェックボックスの例

JSF 2チェックボックスの例

JSFでは、<h:selectBooleanCheckbox />タグを使用して、「checkbox」タイプの単一のHTML入力要素をレンダリングします。

//JSF...
 Remember Me

//HTML output...
 Remember Me

一方、<h:selectManyCheckbox />タグは、「チェックボックス」タイプのHTML入力要素のセットをレンダリングし、HTMLテーブルタグとラベルタグでフォーマットするために使用されます。

//JSF...

    
    
    


//HTML output...

JSF 2.0の例

これは、「h:selectBooleanCheckbox」タグと「h:selectManyCheckbox」タグの使用法を示すJSF2.0の例です。

h:selectBooleanCheckbox
単一のチェックボックスをレンダリングし、ブールプロパティを使用してワイヤリングします。

h:selectManyCheckbox
チェックボックスのグループをレンダリングし、さまざまな方法でデータを入力します。

  1. f:selectItem」タグにハードコードされた値。

  2. 配列を使用して値を生成し、それを「f:selectItems」タグに入れます。

  3. マップを使用して値を生成し、それを「f:selectItems」タグに入れます。

  4. オブジェクト配列を使用して値を生成し、それを「f:selectItems」タグに入れてから、「var」属性を使用して値を表します。

1. バッキングビーン

送信されたチェックボックスの値を保持するバッキングBean。

package com.example;

import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public boolean rememberMe;
    public String[] favNumber1;
    public String[] favNumber2;
    public String[] favNumber3;
    public String[] favNumber4;

    //getter and setter methods...

    public String getFavNumber1InString() {
        return Arrays.toString(favNumber1);
    }

    //Generated by Array
    public String[] getFavNumber2Value() {

        favNumber2 = new String[5];
        favNumber2[0] = "Number2 - 1";
        favNumber2[1] = "Number2 - 2";
        favNumber2[2] = "Number2 - 3";
        favNumber2[3] = "Number2 - 4";
        favNumber2[4] = "Number2 - 5";

        return favNumber2;
    }

    public String getFavNumber2InString() {
        return Arrays.toString(favNumber2);
    }


    //Generated by Map
    private static Map number3Value;
    static{
        number3Value = new LinkedHashMap();
        number3Value.put("Number3 - 1", "1"); //label, value
        number3Value.put("Number3 - 2", "2");
        number3Value.put("Number3 - 3", "3");
        number3Value.put("Number3 - 4", "4");
        number3Value.put("Number3 - 5", "5");
    }

    public Map getFavNumber3Value() {
        return number3Value;
    }

    public String getFavNumber3InString() {
        return Arrays.toString(favNumber3);
    }

    //Generated by Object array
    public static class Number{
        public String numberLabel;
        public String numberValue;

        public Number(String numberLabel, String numberValue){
            this.numberLabel = numberLabel;
            this.numberValue = numberValue;
        }

        public String getNumberLabel(){
            return numberLabel;
        }

        public String getNumberValue(){
            return numberValue;
        }

    }

    public Number[] number4List;

    public Number[] getFavNumber4Value() {

        number4List = new Number[5];
        number4List[0] = new Number("Number4 - 1", "1");
        number4List[1] = new Number("Number4 - 2", "2");
        number4List[2] = new Number("Number4 - 3", "3");
        number4List[3] = new Number("Number4 - 4", "4");
        number4List[4] = new Number("Number4 - 5", "5");

        return number4List;
    }

    public String getFavNumber4InString() {
        return Arrays.toString(favNumber4);
    }

}

2. JSFページ

h:selectBooleanCheckbox」および「h:selectManyCheckbox」タグの使用を示すJSFページ。



    

        

JSF 2 checkboxes example

1. Single checkbox

Remember Me

2. Mutiple checkboxes

1. Hard-coded with "f:selectItem" :
2. Generated by Array :
3. Generated by Map :
4. Generated by Object with var :

result.xhtml…




    

        

JSF 2 checkboxes example

result.xhtml

  1. user.rememberMe : #{user.rememberMe}
  2. user.favNumber1 : #{user.favNumber1InString}
  3. user.favNumber2 : #{user.favNumber2InString}
  4. user.favNumber3 : #{user.favNumber3InString}
  5. user.favNumber4 : #{user.favNumber4InString}

3. Demo

jsf2-checkboxes-example-1

「送信」ボタンをクリックすると、「result.xhtml」ページにリンクし、送信されたチェックボックスの値を表示します。

jsf2-checkboxes-example-2

デフォルトでチェックボックス値をチェックする方法は?

h:selectBooleanCheckbox
ブール値がtrueに設定されている場合、「f:selectItem」タグの値がチェックされます。 上記の例で、ブール値プロパティ「rememberMe」をtrueに設定すると、

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public boolean rememberMe = true;

    //...

「rememberMe」チェックボックスの値はデフォルトでチェックされています。

h:selectManyCheckbox
「f:selectItems」タグの値が「h:selectManyCheckbox」タグの「value」と一致するかどうかがチェックされます。 上記の例で、favNumber3を\ {“ 1”、” 3”}に設定した場合:

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

    public String[] favNumber3 = {"1","3"};

    //...

「favNumber3」チェックボックス、「Number 1」および「Number 3」の値はデフォルトでチェックされています。

ソースコードをダウンロード

ダウンロード–JSF-2-Checkboxes-Example.zip(10KB)