In JSF, “h:selectOneRadio
” tag is used to render a set of HTML input element of type “radio
“, and format it with HTML table and label tag.html
//JSF... <h:selectOneRadio value="#{user.favColor1}"> <f:selectItem itemValue="Red" itemLabel="Color1 - Red" /> <f:selectItem itemValue="Green" itemLabel="Color1 - Green" /> <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" /> </h:selectOneRadio>
//HTML output... <table> <tr> <td> <input type="radio" name="j_idt6:j_idt8" id="j_idt6:j_idt8:0" value="Red" /> <label for="j_idt6:j_idt8:0"> Color1 - Red</label></td> <td> <input type="radio" name="j_idt6:j_idt8" id="j_idt6:j_idt8:1" value="Green" /> <label for="j_idt6:j_idt8:1"> Color1 - Green</label></td> <td> <input type="radio" name="j_idt6:j_idt8" id="j_idt6:j_idt8:2" value="Blue" /> <label for="j_idt6:j_idt8:2"> Color1 - Blue</label> </td> </tr> </table>
A JSF 2.0 example to show the use of “h:selectOneRadio
” tag to render radio buttons, and populate the data in 3 different ways :java
f:selectItem
” tag.f:selectItems
” tag.f:selectItems
” tag, then represent the value with a “var
” attribute.A backing bean to hold the submitted data.this
package com.mkyong; 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 String favColor1; public String favColor2; public String favColor3; //getter and setter methods //Generated by Map private static Map<String,Object> color2Value; static{ color2Value = new LinkedHashMap<String,Object>(); color2Value.put("Color2 - Red", "Red"); //label, value color2Value.put("Color2 - Green", "Green"); color2Value.put("Color3 - Blue", "Blue"); } public Map<String,Object> getFavColor2Value() { return color2Value; } //Generated by Object array public static class Color{ public String colorLabel; public String colorValue; public Color(String colorLabel, String colorValue){ this.colorLabel = colorLabel; this.colorValue = colorValue; } public String getColorLabel(){ return colorLabel; } public String getColorValue(){ return colorValue; } } public Color[] color3List; public Color[] getFavColor3Value() { color3List = new Color[3]; color3List[0] = new Color("Color3 - Red", "Red"); color3List[1] = new Color("Color3 - Green", "Green"); color3List[2] = new Color("Color3 - Blue", "Blue"); return color3List; } }
A JSF page to demonstrate the use “h:selectOneRadio
” tag.3d
<?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 radio button example</h1> <h:form> 1. Hard-coded with "f:selectItem" : <h:selectOneRadio value="#{user.favColor1}"> <f:selectItem itemValue="Red" itemLabel="Color1 - Red" /> <f:selectItem itemValue="Green" itemLabel="Color1 - Green" /> <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" /> </h:selectOneRadio> <br /> 2. Generated by Map : <h:selectOneRadio value="#{user.favColor2}"> <f:selectItems value="#{user.favColor2Value}" /> </h:selectOneRadio> <br /> 3. Generated by Object array and iterate with var : <h:selectOneRadio value="#{user.favColor3}"> <f:selectItems value="#{user.favColor3Value}" var="c" itemLabel="#{c.colorLabel}" itemValue="#{c.colorValue}" /> </h:selectOneRadio> <br /> <h:commandButton value="Submit" action="result" /> <h:commandButton value="Reset" type="reset" /> </h:form> </h:body> </html>
result.xhtml…code
<?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 radio button example</h1> <h2>result.xhtml</h2> <ol> <li>user.favColor1 : #{user.favColor1}</li> <li>user.favColor2 : #{user.favColor2}</li> <li>user.favColor3 : #{user.favColor3}</li> </ol> </h:body> </html>
When “submit” button is clicked, link to “result.xhtml” and display the submitted radio button values.
orm
In JSF, the radio button values of “f:selectItems
” tag is selected if it matched to the “value” of “h:selectOneRadio
” tag. In above example, if you set favColor2 to “Red” :xml
@ManagedBean(name="user") @SessionScoped public class UserBean{ public String[] favColor = "Red"; //...
The “favColor2″ radio button, “Red” option is selected by default.htm