JSF 2チェックボックスの例
JSFでは、
<h:selectBooleanCheckbox/>
タグは、 ”
checkbox
“タイプの単一のHTML入力要素をレンダリングするために使用されます。
….//JSF…
<h:selectBooleanCheckbox value=”#{user.rememberMe}”/> Remember Me
<input type=”checkbox” name=”j
idt6:j
idt8″/> Remember Me
** <h:selectManyCheckbox/> ** タグは、 "checkbox"タイプのHTML入力要素のセットをレンダリングし、HTMLテーブルとラベルタグでフォーマットします。 ....//JSF... <h:selectManyCheckbox value="#{user.favNumber1}"> <f:selectItem itemValue="1" itemLabel="Number1 - 1"/> <f:selectItem itemValue="2" itemLabel="Number1 - 2"/> <f:selectItem itemValue="3" itemLabel="Number1 - 3"/> </h:selectManyCheckbox> //HTML output... <table> <tr> <td> <input name="j__idt6:j__idt10" id="j__idt6:j__idt10:0" value="1" type="checkbox"/> <label for="j__idt6:j__idt10:0" class=""> Number1 - 1</label></td> <td> <input name="j__idt6:j__idt10" id="j__idt6:j__idt10:1" value="2" type="checkbox"/> <label for="j__idt6:j__idt10:1" class=""> Number1 - 2</label></td> <td> <input name="j__idt6:j__idt10" id="j__idt6:j__idt10:2" value="3" type="checkbox"/> <label for="j__idt6:j__idt10:2" class=""> Number1 - 3</label></td> <td> </tr> </table>
JSF 2.0の例
次に、「
h:selectBooleanCheckbox
」および「
h:selectManyCheckbox
」タグの使用方法を示すJSF 2.0の例を示します。
タグを使用し、値を ”
var
“属性で表します。
1.バッキングビーン
送信されたチェックボックスの値を保持するバッキングBean。
package com.mkyong; 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<String,Object> number3Value; static{ number3Value = new LinkedHashMap<String,Object>(); 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<String,Object> 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ページ。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" > <h:body> <h1>JSF 2 checkboxes example</h1> <h:form> <h2>1. Single checkbox</h2> <h:selectBooleanCheckbox value="#{user.rememberMe}"/> Remember Me <h2>2. Mutiple checkboxes</h2> 1. Hard-coded with "f:selectItem" : <h:selectManyCheckbox value="#{user.favNumber1}"> <f:selectItem itemValue="1" itemLabel="Number1 - 1"/> <f:selectItem itemValue="2" itemLabel="Number1 - 2"/> <f:selectItem itemValue="3" itemLabel="Number1 - 3"/> <f:selectItem itemValue="4" itemLabel="Number1 - 4"/> <f:selectItem itemValue="5" itemLabel="Number1 - 5"/> </h:selectManyCheckbox> <br/> 2. Generated by Array : <h:selectManyCheckbox value="#{user.favNumber2}"> <f:selectItems value="#{user.favNumber2Value}"/> </h:selectManyCheckbox> <br/> 3. Generated by Map : <h:selectManyCheckbox value="#{user.favNumber3}"> <f:selectItems value="#{user.favNumber3Value}"/> </h:selectManyCheckbox> <br/> 4. Generated by Object with var : <h:selectManyCheckbox value="#{user.favNumber4}"> <f:selectItems value="#{user.favNumber4Value}" var="n" itemLabel="#{n.numberLabel}" itemValue="#{n.numberValue}"/> </h:selectManyCheckbox> <br/> <h:commandButton value="Submit" action="result"/> <h:commandButton value="Reset" type="reset"/> </h:form> </h:body> </html>
result.xhtml …
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" > <h:body> <h1>JSF 2 checkboxes example</h1> <h2>result.xhtml</h2> <ol> <li>user.rememberMe : #{user.rememberMe}</li> <li>user.favNumber1 : #{user.favNumber1InString}</li> <li>user.favNumber2 : #{user.favNumber2InString}</li> <li>user.favNumber3 : #{user.favNumber3InString}</li> <li>user.favNumber4 : #{user.favNumber4InString}</li> </ol> </h:body> </html>
デモ
「送信」ボタンをクリックすると、「result.xhtml」ページにリンクし、送信されたチェックボックスの値を表示します。
jsf2-checkboxes-example-2、title = “jsf2-checkboxes-example-2″、width = 640、height = 382]
デフォルトでチェックボックスの値をチェックする方法は?
-
h:selectBooleanCheckbox ** ブール値がtrueに設定されている場合、 “f:selectItem”タグの値がチェックされます。上記の例では、booleanプロパティ “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」の値は、デフォルトでチェックされます。
ソースコードをダウンロードする
ダウンロード – リンク://wp-content/uploads/2010/10/JSF-2-Checkboxes-Example.zip[JSF-2-チェックボックス – サンプル.zip](10KB)
リファレンス
<h:selectBooleanCheckbox/> JavaDoc]。
https://javaserverfaces.dev.java.net/nonav/docs/2.0/pdldocs/facelets/h/selectManyCheckbox.html
[JSF
<h:selectManyCheckbox.html/> JavaDoc]